gpt4 book ai didi

javascript - 重置 View 集合时如何触发渲染

转载 作者:行者123 更新时间:2023-11-30 12:57:38 25 4
gpt4 key购买 nike

我刚刚开始使用 Backbone。我有一个与集合关联的 View ,我想在集合与服务器成功同步时呈现该 View 。

我已经设法让我的收藏成功同步 -

  var MyCollection = Backbone.Collection.extend({
model: Backbone.Model,
url: '/api/cart/lineitem'
});

var myCollection = new MyCollection();

myCollection.fetch({
success: function() {
console.log('fetched ' + myCollection.length + ' objects');
}
});

控制台显示 fetch 函数有效。

但是,在我看来,我遇到了一些奇怪的行为。我似乎无法运行渲染函数。

  var MyView = Backbone.View.extend({

el: $('#mini_cart'),

cartTpl: _.template($('#miniCartTemplate').html()),

initialize: function() {
this.listenTo(this.collection, 'reset', this.render);
this.listenTo(this.collection, 'reset', console.log('collection reset'));
},

render: function(){
console.log('rendering MyView');
}

});

var myView = new MyView({
collection: new MyCollection()
});

控制台显示事件触发但它从未进入 render 方法(即我收到“集合重置”消息但从未收到“呈现 MyView”消息)。我真的不明白发生了什么(我根本不明白 reset 事件是如何在我的收藏中触发的)。

最佳答案

this.listenTo(this.collection, 'reset', console.log('collection reset'));

listenTo 的第三个参数必须是函数,而不是方法调用(不返回函数)。尝试删除此行或将 console.log 调用包装到这样的函数中:

 this.listenTo(this.collection, 'reset', function(){console.log('collection reset');});

关于javascript - 重置 View 集合时如何触发渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18488075/

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