是否可以在Backbone.js中创建带参数的模型和视图?
我试着像
var TestModel = Backbone.Model.extend( {
initialize: function(test){
this.set('test',test);
alert("test");
}
});
但我收到消息 this.set不是函数。
答案 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)