0

所以我想要实现的是当用户想要编辑/查看一个项目(模型)时,我将它们发送到一个 URL,创建一个新的模型实例并在加载相关视图和处理之前调用 .fetch它是新模型。

由于各种原因,我需要知道用户是在编辑还是查看项目(模型),所以我的第一次尝试是这样的:

app.Models.Quote = Backbone.Model.extend({

    idAttribute: 'Number',

    initialize: function() {
        this.editMode = false;  
    },

    url: function() {
        return app.Settings.apiUrl() + '/quotes/' + this.id;
    }

});

所以在视图/编辑视图的各个地方,我可以这样做:

if(this.model.editMode){ //foo }

然而,这似乎根本不起作用,即。未找到 editMode(未定义)。

人们实现这一目标的一般解决方案/建议是什么?

4

2 回答 2

0

这是这个属性正在工作的快速示例:http: //jsfiddle.net/damian0o/u9rrh/

通过添加类似的内容确保这是您的视图实例

var self = this;

或使用 undersocore 方法

_.bindAll(this,""); 

在视图初始化方法

于 2013-03-14T11:58:09.640 回答
0

尝试将 editMode 添加为模型的属性。您现在可以执行 this.model.editMode,在您的模型中,您可以将 editMode 称为 this.editMode。

app.Models.Quote = Backbone.Model.extend({

    idAttribute: 'Number',

    editMode: false, // this initializes the value to false   

    initialize: function() {
        //this.editMode = false;  
    },

    url: function() {
        return app.Settings.apiUrl() + '/quotes/' + this.id;
    }

});
于 2013-03-14T11:56:15.207 回答