[英]EmberJS - one way binding of query param to input field value broken
在下面的例子中:
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,任何更改查詢參數的后續地址導航也將更新輸入字段值。 但是,在執行第一次搜索后,此綁定將被破壞,並且在查詢參數更改時字段值不再更新。
是不是全部的想法:queryField: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')
。
我正在尋找最佳實踐方法。
Ember.computed.oneWay
背后的想法是你提供了單向綁定。 因此,在將queryField
更改為其他內容(僅編輯輸入)之后,它將被覆蓋。
你可以做的是創建一個觀察者,用一些延遲更新你的queryField,例如使用Ember.run.debounce
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.