2015-01-03 33 views
0

我有一個觀點:如何根據骨幹和木偶中的對象更改來更新視圖?

define(['backbone', 'hbs!tmpl/test_tmpl'], 
function (Backbone, TestTmpl) { 
    'use strict'; 
    return Backbone.Marionette.ItemView.extend({ 
     initialize: function() { 
      this.projects = {}; 
     }, 
     template: TestTmpl, 
     templateHelpers: function() { 
      return { 
       projects: this.projects 
      } 
     }, 
     ui: {}, 
     events: {}, 
     onRender: function() { 
      this.projects = {title: 'a'}; 
      return this; 
     } 
    }); 
}); 

然後在視圖:在onRender()方法

{{#each projects}}{{this.title}}{{/each}} 

我更新項目this.projects = {title: 'a'};和設置的時候,我想視圖數據進行更新,以及

有什麼想法?

回答

0

嘗試調用

this.render(); 

通常情況下,你會使用的CollectionView代替ItemView控件的。
如果您碰巧需要圍繞包裹元素的更多HTML,請改爲使用compositeview。

注意一個的CollectionView需要一個骨幹集合時,你通過它:

var collectionview = new CollectionView({ collection: bbCollection }); 

的ItemView控件採用模型:

var itemview = new ItemView({ model: bbModel}); 

爲了您例如,使用的CollectionView不再需要創建在模板內循環。
你可以通過調用

this.model.get("property"); 

在ItemView控件訪問當前ItemView控件的屬性。

在您的例子,它會出現,我認爲你寧願有一個數組,而不是一個對象:

var projects = [{ title: "X"}, { title: "Y" }]; 

您可以即時創建一個骨幹集合是這樣的:

var projects_collection = new Backbone.Collection(projects); 

並將其傳遞到collectionview:

//First create a Marionette Collectionview, then: 
var projectsCollview = new ProjectsCollview({ collection: projects_collection });