2013-11-14 144 views
0

传回模型属性我有一个控制器:如何从视图骨干

  var layout = new LayoutView(); 
      App.holder1.show(layout); 
      var my_view = new myView({id: options}) 
      layout.holder1.show(); 

      console.log(my_view.model.get('name')) <---- I want this 

我想get my_view.model.get('name')然而,问题是,我得到undefined。我有console.log模型,它是填充好,但我认为这是因为它尚未完全加载,但我尝试获得。

这是我目前thisView:

var thisView = Backbone.Marionette.ItemView.extend({ 
      initialize: function (options) { 
       this.model.fetch(); 
      }, 
      model: new myModel(), 
      template: testExampleTemplate, 
     }); 
     return thisView; 
+0

我不明白你需要什么。你想要访问外部模型的id,但是你只能参考视图? –

+0

我会更新这个问题以更有意义 – GrantU

+0

可能的重复:[Backbone.js获取问题](http://stackoverflow.com/q/6048480/722238)。还有更多的这些问题 - 有很多答案围绕着stackoverflow。 – fbynite

回答

1

监听事件。 “更改”或“重置”将起作用。

viewInstance.model.on("change", function(){ 
    viewInstance.model.get("nameOfAttribute"); 
    // do something 
}); 

http://backbonejs.org/#Events-catalog

+0

是的,但我遇到的问题是视图中的model.fetch()没有完成加载,所以我得到了未定义的。 – GrantU

+0

好的,然后听听模型上的更改事件。还有其他的事件你也可以听。 –

+0

更新了答案,以反映我们的讨论 –

2

你只有成功后的回调函数填充对象:

initialize: function (options) { 
    this.model.fetch({ 
    success: function(model){ 
     console.log(model.get('name')); 
    }; 
    }); 
} 
1

有几个方法可以解决这个。首先,您可以在视图中侦听模型中的更改事件,并在更改事件触发时执行您需要的任何操作。如果你需要做一些事情,你可以选择一些方法:你可以为你的模型的解析方法编写一个实现,它激发你的视图监听的事件并做出回应,或者你可以在成功回调中做些事情对于获取方法本身(作为获取选项传递)。如果我更好地理解哪种方法对您的情况有意义,我可以举一个例子。