2011-12-14 166 views
3

我在骨幹視圖中有以下場景。我希望像這樣設置模型。設置骨幹模型

saveField : function(field, val){ 
    //field = 'username'; val = 'Boris' 
model.set({field : val}); 
} 

該字段是模型中屬性的字符串表示形式。

問題是骨幹網正在通過域名創建新屬性。 我可以這樣設置

model.attributes[field] = val; 

但是,我寧願使用set。

任何人都知道我該怎麼做? 感謝

編輯:終於實現了 -

var asObj = new Object; 
asObj[field] = val; 
model.set(asObj); 
+2

我這樣做就像你最終做的一樣。 – Paul 2011-12-14 03:11:15

+0

你可以`var asObj = {};` - 更短但是是 - 鍵是一個字符串。你也可以`model.attribytes [field] = val;`和`model.changed();`但是很多醜陋的(和afaik「改變了:」事件不會消失) – 2011-12-14 10:27:02

回答

4

望着骨幹source這應該已經工作 - 您的通話只需要看起來有點不同。

saveField : function(field, val){ 
    //field = 'username'; val = 'Boris' 
    model.set(field, val); 
} 

您正在查找的參數格式是set(key, value, options)。這意味着你一次只能設置一個屬性,但看起來就是你想要做的。另一種格式是set(attr, options),這是你正在使用的,但不適用於字符串鍵。

無論如何,你不想直接設置屬性,因爲主幹在內部使用這個鉤子來做一些事情,比如引發'changed'事件。