gpt4 book ai didi

javascript - BackboneJs - 模型或集合是否应该具有 View 知识

转载 作者:行者123 更新时间:2023-11-29 20:12:15 30 4
gpt4 key购买 nike

在我从 SO answers here 和许多 BackBoneJs 示例中选择的示例之一中,我看到初始化函数知道模型将使用哪个 View 进行渲染。我不知道我现在有点偏见,这是一个好的做法还是取决于正在开发的应用程序类型。

例子

http://jsfiddle.net/thomas/Yqk5A/

编辑 fiddle

http://jsfiddle.net/Yqk5A/187/

代码引用

FriendList = Backbone.Collection.extend({
initialize: function(){
this.bind("add", function( model ){
alert("hey");
view.render( model );
})
}
});

是上面的好习惯还是下面的好习惯

var friendslist = new FriendList;
var view = new FriendView({el: 'body'});
friendslist.bind("add", function( model ){
alert("hey" + model.get("name"));
view.render( model );
})

在 edited fiddle collection 中是由一个 view 渲染的,我们也可以使用更多的 views 来渲染 collection。

最佳答案

我完全赞成使用事件,我自己不想将绑定(bind)移到模型之外,我会像原始示例一样将它们保留在那里

var app = {};
app.evt = _.extend({}, Backbone.Events); // adding a global event aggregator

FriendList = Backbone.Collection.extend({
initialize: function(){
this.bind("add", function( model ){
alert("hey");
app.evt.trigger('addfriend', model);
})
}
});

//further in your code you can bind to that event
app.evt.bind("addfriend", function(model){
var view = new FriendView({el: 'body'});
view.render(model);
});

然而,我发现这个例子有点奇怪,创建一个新 View ,以 body 作为元素,并通过给渲染函数一个模型来渲染它。如果 View 是使用模型作为属性创建的,然后将内容渲染到主体中,我会发现它更符合逻辑。但那是另一个主题。

简而言之,我在外部创建 View ,监听被触发的事件,但集合上的绑定(bind)保留在集合代码中。我发现将所有收集代码放在同一个地方更易于管理。

关于javascript - BackboneJs - 模型或集合是否应该具有 View 知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8907425/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com