是否可以在 Backbone.js 中使用参数创建模型和视图?
我尝试简单的喜欢
var TestModel = Backbone.Model.extend( {
initialize: function(test){
this.set('test',test);
alert("test");
}
});
但我收到消息this.set is not a function。
是否可以在 Backbone.js 中使用参数创建模型和视图?
我尝试简单的喜欢
var TestModel = Backbone.Model.extend( {
initialize: function(test){
this.set('test',test);
alert("test");
}
});
但我收到消息this.set is not a function。
您的示例代码中存在语法错误,但这应该可以正常工作。您还需要将模型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"
});
简短的回答是肯定的。您没有显示足够的代码,但这有效:
var TestModel = Backbone.Model.extend({});
var t = new TestModel({test: 'test'});
t.get('test');
>>> test
您不能将任何内容传递给该initialize
方法,但您可以在实例化对象时传递一个哈希值。
虽然,由于它不会在创建时进行验证(所以它总是会返回一个有效的模型),你最好这样做:
var t = new TestModel();
t.set('test', 'test');
因此,如果您的值无法验证,您将能够收到错误。
对象“this”具有作为“属性”的所有值。因此,如果您想访问任何属性,
你可以试试
alert(this.attributes.test)