2014-11-23 62 views
1

我的問題非常特定於骨幹關聯(http://dhruvaray.github.io/backbone-associations)。我想知道在嵌套模型上設置屬性時是否可以合併屬性。這裏是一個減少的問題:合併使用model.set時使用骨幹關聯的屬性

// define the Layout model 
var Layout = Backbone.AssociatedModel.extend(); 

// define the User model, with layout as a Related model 
var User = Backbone.AssociatedModel.extend({ 
    relations: [ 
     { 
      type: Backbone.One, 
      key: 'layout', 
      relatedModel: Layout 
     } 
    ], 
    defaults: { 
     layout: {} 
    } 
}); 

// create a new user 
var user = new User({ user_name: 'pascalpp' }); 

// set a property on the layout model 
user.set('layout.foo', 'bar'); 
user.get('layout.foo'); // returns 'bar' 

// call set on the user directly, passing a JSON structure with no foo property 
user.set({ layout: { 'baz': 'bing' } }); 
user.get('layout.foo'); // foo got wiped, so this returns undefined 

我面對的現實情況是,我們需要爲用戶獲取部分數據和設置用戶模型,而不會抹殺先前設置的屬性,唐」 t存在於當前提取中。所以我希望我們可以在設置屬性時進行合併。這可能嗎?

回答

2

如果新模型和現有模型的id匹配,主幹關聯會更新現有的嵌套模型。如果id是未定義的或者它們不匹配,那麼嵌套模型將被新的替換。

我對這些單體嵌套模型做了什麼,我介紹假ID = 0,然後它像預期的那樣工作。

這是一個工作jsfiddle

工作代碼:

​​
+0

啊哈!我們已經爲我們的相關模型分配了ID,但我們是在原型中進行的,而不是默認值。將我們的代碼更新爲使用默認值,以便將id應用於實例本身。謝謝! – Pascal 2014-11-24 03:41:10