我初始化视图:
notifications = new tvr.notifications.Collection
notifications.fetch()
new tvr.notifications.View collection:notifications
我将“通知”添加到主干集合中:
notifications = new tvr.notifications.Collection
notifications.fetch()
notifications.create html:this_notification
notifications.coffee
class Notifiction extends Backbone.Model
class Notifictions extends Backbone.Collection
model = Notifiction
localStorage: new Backbone.LocalStorage 'tvr.notifications'
class NotificationView extends Backbone.View
initialize: ->
@listenTo @collection, "add", @update
update: ->
alert "update"
namespace 'tvr.notifications', (exports) ->
exports.Model = Notifiction
exports.Collection = Notifictions
exports.View = NotificationView
永远不会调用此事件,我可以看到集合中创建的对象。
我只是想知道何时添加或从集合中删除新的,所以我可以更新HTML中的徽章编号。
答案 0 :(得分:1)
您正在尝试将"Add"
事件绑定到函数调用,这是不可能的。您需要将事件绑定到函数引用,Backbone的事件机制将调用代表您引用的函数。不使用alert
,这里是一个差异的示例(在JavaScript中)。
要调用的功能
var myFunc = function() {
alert("happy days");
}
非法强>
notifications.on("add", myFunc());
<强>法律强>
notifications.on("add", myFunc);
所以你可以在你的例子中看到你试图调用alert
函数并在使用"happy days"
绑定它时传递on
的参数。这是不允许的。
但是,如果您编写一个无参数函数来包装您想要调用的代码,例如在上面的myFunc
示例中并将其分配给变量或其他对象,则可以将事件绑定到函数的参考。然后,这应该按照您期望的方式运行。
最后,您应该使用listenTo
绑定事件,而不是on
。这是出于SO已经讨论过的原因。如需进一步参考,请阅读以下内容: