【发布时间】:2015-01-19 18:47:19
【问题描述】:
在下面的例子中:
App = Ember.Application.create();
App.ApplicationController = Ember.ArrayController.extend({
queryParams: ['query'],
query: null,
queryField: Ember.computed.oneWay('query'),
actions: {
search: function() {
this.set('query', this.get('queryField'));
}
}
});
App.ApplicationRoute = Ember.Route.extend({
queryParams: {
query: {
// Opt into full transition
refreshModel: true
}
}
});
运行示例:http://jsbin.com/tukoye/2#/?query=22345
...如果我们到达 ...?query=22345,任何更改查询参数的后续地址导航也将更新输入字段值。但是在执行第一次搜索后,这个绑定被破坏了,当查询参数改变时,字段值不再更新。
这不就是: 查询字段:Ember.computed.oneWay('query') 总是更新 queryField 属性?
(此处的jsBin代码:http://jsbin.com/tukoye/edit?html,js)
一种可能的解决方案是将其添加到路由:
actions: {
queryParamsDidChange: function(params) {
this.controllerFor('application').set('queryField', params.query);
}
}
... 并从控制器中删除 queryField: Ember.computed.oneWay('query')。
我正在寻找最佳实践方法。
【问题讨论】:
标签: javascript ember.js