我有一个控制器:
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 :(得分:2)
只有在成功回调函数之后才会填充对象:
initialize: function (options) {
this.model.fetch({
success: function(model){
console.log(model.get('name'));
};
});
}
答案 1 :(得分:1)
听一个事件。 “改变”或“重置”将起作用。
viewInstance.model.on("change", function(){
viewInstance.model.get("nameOfAttribute");
// do something
});
答案 2 :(得分:1)
有几种方法可以解决这个问题。首先,您可以从视图中的模型中侦听更改事件,并在更改事件触发时执行您需要的任何操作。如果你需要做什么,无论如何,你有几个选择:你可以为你的模型的parse方法编写一个实现,它触发你的视图监听的事件并做一些响应,或者你可以在成功回调中做一些事情用于获取方法本身(作为获取选项传递)。如果我更了解哪种方法对你的情况有意义,我可以提供一个例子。