如何从视图Backbone传回模型属性

时间:2013-11-14 22:51:35

标签: javascript backbone.js marionette

我有一个控制器:

            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;

3 个答案:

答案 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
});

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

答案 2 :(得分:1)

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