如何从视图主干传递回模型属性

How to pass back model attribute from a view Backbone

本文关键字:模型 属性 视图      更新时间:2023-09-26

我有一个控制器:

            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了模型并且它填充正常,但是我认为这是因为当我尝试获取时它还没有完全加载。

这是我目前的这个观点:

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

只有在成功回调函数之后才会填充对象:

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

侦听事件。"更改"或"重置"将起作用。

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

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

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