模型完成获取后,骨干视图获取模型变量

时间:2013-10-17 11:47:01

标签: javascript jquery backbone.js

在Backbone.js中,如何在fetch完成后检索模型函数返回的可验证值?据我所知,模型无法与视图进行通信,那么视图如何监听模型特定的函数获取?

谢谢!

我尝试这样做可以在下面看到(如果你看到代码错误,不介意它们,我写这个作为我正在尝试做的一个例子):

var ScheduleModel = Backbone.Model.extend({
        urlRoot: '/api/schedule/1',
        getSubjectData: function(){
            this.fetch({
                success: function(data, scheduleData){
                    return scheduleData;
                }
            });
        }
});

var ScheduleView = Backbone.View.extend({
    initialize: function(){
         console.log(this.model.getSubjectData());
    }
});

2 个答案:

答案 0 :(得分:3)

您可以使用listenTo收听多个模型事件:

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

因为model.fetch触发“更改”事件(http://backbonejs.org/#Model-fetch)在您的视图代码中有些类似:

var ScheduleView = Backbone.View.extend({
    initialize: function(){
        console.log(this.model.getSubjectData());
        this.listenTo(this.model, 'change', this.doSmthng);
    },
    doSmthng: function () {
        // ....
    }
});

应该触发doSmthng模型的提取完成。

答案 1 :(得分:1)

您可以在此处查看fetch内部视图。

var ScheduleView = Backbone.View.extend({
    initialize: function(){
        this.model.fetch({success: function() {
             //you can do your stuff here. 
             //Try to get model data using `model.get`.
        }});    
    }
}

As I understand the model cannot communicate with the view.

这是错误的。您可以在view

中设置这样的内容
this.model.view = this;

您可以像这样访问模型中的视图。

this.view

但在我的应用程序中,我不是这样做的。访问模型内​​部的视图将破坏主干的目的。