是否可以使用参数在Backbone.js中创建模型和视图?

时间:2012-04-23 13:25:48

标签: backbone.js

是否可以在Backbone.js中创建带参数的模型和视图?
我试着像

一样简单
    var TestModel = Backbone.Model.extend( {
        initialize: function(test){
        this.set('test',test);
        alert("test");
    }
});

但我收到消息 this.set不是函数

3 个答案:

答案 0 :(得分:2)

您的示例代码中存在语法错误,但这应该可以正常工作。您还需要将模型attributes视为第一个参数,并引用通用options对象作为第二个参数(请参阅此处的代码http://backbonejs.org/docs/backbone.html#section-28

但是,从您的示例代码来看,您似乎只是想将数据传递给模型,而模型会自动为您处理。


var TestModel = Backbone.Model.extend({});

var t = new TestModel({foo: "bar"});

console.log(t.get("foo"));

或者如果你想要一些选择,你可以这样做:


var TestModel = Backbone.Model.extend({
  initialize: function(attrs, options){
    console.log(options.foo);
  }
});

var t = new TestModel(null, {
  foo: "bar"
});

答案 1 :(得分:1)

简短的回答是肯定的。您没有显示足够的代码,但这有效:

var TestModel = Backbone.Model.extend({});

var t = new TestModel({test: 'test'});

t.get('test');
>>> test

您无法将任何内容传递给initialize方法,但在实例化对象时可以传入哈希值。

虽然,因为它没有在create上进行验证(所以它总会返回一个有效的模型),所以你最好这样做:

var t = new TestModel();
t.set('test', 'test');

因此,如果您的值未验证,您将能够收到错误。

答案 2 :(得分:0)

对象“this”将所有值都设为“attributes”。因此,如果您想访问任何属性,

你可以尝试

alert(this.attributes.test)