簡體   English   中英

EmberJS - 查詢參數的單向綁定到輸入字段值被破壞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM