0

是否可以在 Backbone.js 中使用参数创建模型和视图?
我尝试简单的喜欢

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

但我收到消息this.set is not a function

4

3 回答 3

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"
});
于 2012-04-23T13:36:04.757 回答
1

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

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

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

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

您不能将任何内容传递给该initialize方法,但您可以在实例化对象时传递一个哈希值。

虽然,由于它不会在创建时进行验证(所以它总是会返回一个有效的模型),你最好这样做:

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

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

于 2012-04-23T13:34:12.073 回答
0

对象“this”具有作为“属性”的所有值。因此,如果您想访问任何属性,

你可以试试

alert(this.attributes.test)

于 2013-05-18T10:07:05.357 回答