我对Meteor有点新意,我遇到的问题是反应数据 - 特别是在我需要根据鼠标或键盘事件更改显示的数据的情况下.正常的js方式做这种事情似乎让我在流星上遇到麻烦,因为我改变的一切都会被重新渲染并不断重置.
所以,我想我会看到这是否可以使用Meteor的Deps对象,但是我无法理解它.这是我正在使用的代码:
(function(){
var tenants = [];
var selectedTenant = 0;
var tenantsDep = new Deps.Dependency;
Template.tenantsBlock.tenantsList = function()
{
tenants = [];
var property = $properties.findOne({userId: Meteor.userId(), propertyId: Session.get('property')});
var tenancies = _Utils.resolveTenancies(property, true, null, true);
for(var i = 0; i < tenancies.length; i++)
{
if(tenancies[i].tenancyId == Session.get('tenancy'))
{
tenants = tenants.concat(tenancies[i].otherTenants, tenancies[i].primaryTenant);
}
}
tenants[selectedTenant].selected = 'Selected';
tenantsDep.changed();
return tenants;
};
Template.tenantsBlock.onlyOneTenant = function()
{
tenantsDep.depend();
return tenants.length > 1 ? '' : 'OneChild';
};
Template.tenantsBlock.phoneNumber …Run Code Online (Sandbox Code Playgroud) 所以我将一个网站放在一起,这将在滚动事件上触发一些css3动画.在编写滚动动画的大约一半时,我注意到页面的标题和其他位置上有很多闪烁:固定元素.
我能做些什么来减少这种眨眼?(理想情况下没有jQuery)
我正在构建一个Sencha Touch应用程序并将其包装在PhoneGap(构建版)中供本机使用.
我最近的版本在iPhone 5上运行时,在屏幕的顶部和底部都有黑色的水平条纹.iPhone 4很好.这个版本与下载新版本之前运行良好的版本之间几乎没有任何区别 - 差异应该只影响用户帐户.
我正在使用Sencha CMD v4.0.2.67,Sencha Touch v2.3.1和PhoneGap v3.3.0来构建应用程序.
截至Meteor 0.9.4,定义模板.MyTemplate.MyHelperFunction()不再有效.
我们弃用了Template.someTemplate.myHelper = ...语法,转而使用Template.someTemplate.helpers(...).使用旧语法仍然有效,但它会向控制台输出弃用警告.
这对我来说似乎很好,因为它(至少)会保存一些错误输入和重复的文本.但是,我很快发现我构建Meteor应用程序的方式倾向于这个新版本已弃用的功能.在我的应用程序中,我一直使用旧语法定义助手/函数,然后从其他助手调用这些方法.我发现它帮助我保持代码清洁和一致.
例如,我可能有这样的控件:
//Common Method
Template.myTemplate.doCommonThing = function()
{
/* Commonly used method is defined here */
}
//Other Methods
Template.myTemplate.otherThing1 = function()
{
/* Do proprietary thing here */
Template.myTemplate.doCommonThing();
}
Template.myTemplate.otherThing2 = function()
{
/* Do proprietary thing here */
Template.myTemplate.doCommonThing();
}
Run Code Online (Sandbox Code Playgroud)
但是Meteor建议的新方法似乎没有这个(这让我觉得我一直都错了).我的问题是,在模板的助手之间共享通用的,模板特定的逻辑的首选方法是什么?
这个函数似乎正在重写'pages'变量的值,而我在这个变量的结尾处.
我已经尝试通过函数返回变量,将变量硬编码到函数中,以及其他一些东西,但这似乎应该可行.
有任何想法吗?
编辑:
输出应该是一个像这样格式化的对象数组{default: "Tax Return", safe: "taxreturn"}.功能,当第一次调用getPages('Both', 'overview', null),并getPages('Both', null, 'overview')做到这一点,但如果你把它更多的时候,它会报错,你会发现,"网页"变量现在是对象的数组.
var pages = [
"Dashboard",
"Overview",
"Contacts",
"Records",
"Cash Flow",
"Transactions",
"Income",
"Expenses",
"Tax Return"
];
var getPages = function(format, includeOne, excludeOne)
{
var pageStrings = pages;
if(includeOne)
for(var p = 0; p < pageStrings.length; p++)
if(uriSafe(pageStrings[p]) == uriSafe(includeOne))
pageStrings = [pageStrings[p]];
if(excludeOne)
for(var c = 0; c < pageStrings.length; c++)
if(uriSafe(pageStrings[c]) == uriSafe(excludeOne))
pageStrings.splice(c, 1);
var outputArray = [];
switch(format) …Run Code Online (Sandbox Code Playgroud)