2014-03-19 73 views
0

從視圖觸發事件後,我需要更新模型的一個屬性。我不知道哪個屬性需要事先更新。我如何使用主幹的set方法設置變量屬性?使用骨幹的設置方法更新可變屬性

這裏是我的模型設定的屬性的一個示例:

defaults: { 
      content: 'Stupid filthy Hobbit', 
      date: '03-19-14', 
      position: [ 
         {top: 134, left: 22}, 
         {top: 78, left: 24}, 
         {top: 91, left: 18} 
         ] 
      } 

下面是我在視圖中使用的方法:

events: { 
    'change input': 'onChangePosition' 
}, 

onChangePosition: function(e){ 

    var key = $(e.currentTarget).data('key'); 
    var attribute = $(e.currentTarget).data('attribute'); 
    var value = $(e.currentTarget).val(); 

    this.model.set(['position'][key][attribute], value); 
} 
+0

您是否已經在視圖中定義了對模型的引用?最好當你實例化視圖? – kinakuta

+0

是的,除了'this.model.set(['position'] [key] [attribute],value);除了' – CrackerKraken

回答

0

我假設key是的整數索引你想在position數組中更新的對象?如果是這樣,您需要獲取位置數組,更新它,然後重新設置它。試試這個:

var position = this.model.get('position'); 
position[key][attribute] = value; 
this.model.set('position', position); 

只是爲了澄清,原因是因爲Backbone.Model.set()只接受兩種形式。要麼設置屬性的哈希值,要麼設置特定屬性的名稱及其值。但是沒有語法可以讓你指定一個數組的索引項,所以你必須得到所有東西,更新它然後設置它。