这里我将模型传递给Backbone视图。
view = new View ({model:{item:4,name:"Ipad"}});
当我在View.log中调用该模型时。我明白了:
Object {item: 4, title: "Ipad"}
这不是骨干模型,因此我没有方法 喜欢toJSON。我意识到,如果我定义一个Backbone模型和 通过它一切正常。
view = new GenreView ({model:new Model({title: 4, title: "Ipad"})});
记录
r {cid: "c2", attributes: Object, _changing: false, _previousAttributes: Object, changed: Object…}
为什么第一种方法不起作用,我该如何解决?
答案 0 :(得分:2)
简单地说,特殊的'model'选项要求Backbone.Model不是javascript对象。
因此,在创建新的Backbone.Model以传递到视图中时,您是正确的。
据我所知,没有什么可以解决的。
答案 1 :(得分:2)
您需要使用Backbone.Model
代替常规JavaScript对象{}
var Item = Backbone.Model.extend({
// ...
});
实例化Item
模型
var myItem = new Item();
现在在视图中使用您的项目
var myView = new View({model: myItem});
此答案假定View
设置为
var View = Backbone.View.extends({
// ...
});
答案 2 :(得分:1)
您可以在视图的initialize
方法中将对象强制转换为Backbone模型:
var View = Backbone.View.extend({
initialize: function(options){
if (_.isPlainObject(this.model)) {
this.model = new Backbone.Model(this.model);
}
}
});
这样,无论您是通过model
实例还是普通对象,视图都可以在Backbone.Model
上运行。您可以在此处查看其中的示例:http://jsbin.com/igecEgE/1/edit?js,console