我们正在将我们的ember应用程序从1.10更新到1.11,我们遇到了一个问题。我们有一个简单的排序切换助手,它不再起作用了。
{{#link-to "foo" (sort-toggle "id")}}
帮助者代码:
Ember.HTMLBars._registerHelper('sort-toggle', function(params, hash, options, env) {
var target = this.get('controller.sortTarget') || hash.target,
view = env.data.view,
field = params[0];
hash = {};
hash[target] = view.getStream(this.get('controller').createToggleString(field));
options = {
hash: hash,
data: options.data
};
return Ember.Handlebars.helpers['query-params'].helperFunction.call(this, [], hash, options, env);
});
似乎自从我们更新为ember-cli 0.2.3(ember 1.11.1)后,现在这是未定义的,因此我们无法访问视图或控制器。
我们在更改日志中没有看到与此相关的内容,有什么变化?我们应该如何迁移呢?
答案 0 :(得分:3)
如果我没记错的话,1.10 - > 1.11升级是我的客户被阻止了一段时间。 1.11和1.12对帮助者没有很好的支持,当他们在1.13中获得更新版本的助手时,他们的工作方式与以前完全不同。
此处提供更多详细信息:
对于我的客户,我们不得不跳转到1.13.3(我相信),因为ember-can
和ember-i18n
都受到这些变化的影响,我们非常依赖它们。
希望有所帮助!
答案 1 :(得分:0)
正如@acorncom所提到的,问题是我们使用的是私有API:env.data.view
。
由于视图仍可在get()
中访问,然后控制器距离Ember.HTMLBars._registerHelper('sort-toggle', function(params, hash, options, env) {
var view = env.data.view,
field = params[0],
target = view.get('controller.sortTarget') || hash.target;
hash = {};
var toggleString = view.get('controller').createToggleString(field);
hash[target] = view.getStream(toggleString);
options = {
hash: hash,
data: options.data
};
return Ember.Handlebars.helpers['query-params'].helperFunction.call(this, [], hash, options, env);
});
只有一个$("#StateListCoolBox").autocomplete({
source: StateListCoolBoxTags,
focus: function( event, ui ) {
$("#StateListCoolBox").val(ui.item.label);
return false;
},
select: function( event, ui ) {
$("#StateListCoolBox").val(ui.item.label);
$("#StateListCoolBox-id").val(ui.item.value);
return false;
}
});
,我们设法现在可以逃脱这一点,但这只是一个临时解决方案,我们将不得不重构很快。
新代码:
function StateListCoolBox_dropDownClick() {
$("#StateListCoolBox").autocomplete("search", "" );
};