gpt4 book ai didi

javascript - 在 Backbone 中跨不同类触发和监听事件 - 在 CoffeeScript 中

转载 作者:行者123 更新时间:2023-11-29 20:05:41 27 4
gpt4 key购买 nike

基本上我是 Backbone 的新手。从我的 Angular 来看,我正在更改我的集合中名为“限制”的属性。然后我尝试触发一个事件(当属性刚刚更改时),允许我监听该事件并执行其他操作。

但是,当某些内容发生更改时从我的集合中触发一个事件,并在更改发生时监听该更改是行不通的。我认为这与 View 和集合相互通信有关。任何帮助将不胜感激!谢谢

触发事件的代码(在我的收藏中)是:

@trigger("change") #TRIGGER THE EVENT

更改我的集合中的属性的代码(有效)是:

@Properties.attr("limit", "1000") #Change the limit attr to "1000"

监听变化的代码(不起作用)是:

@Properties.on("change", ->
alert("Attribute has been changed!")
)

完整代码为:

class PropertyCollection extends Backbone.Collection
model: Property

constructor: ->
super

initialize: ->
@_attr = {}

#Function to change attribute of collection
attr: (prop, value) ->
if value is undefined
@_attr[prop]
else
@_attr[prop] = value
@trigger("change") #TRIGGER THE EVENT

limit: "0" #Attribute - default is set to 0



class HomeView extends Backbone.View
constructor: ->
super

initialize: ->
@Properties = new PropertyCollection

@Properties.attr("limit", "1000") #Change the limit attr to "1000"

#Listen for the change
@Properties.on("change", ->
alert("Attribute has been changed!")
)

template: _.template($('#home').html())

render: ->
$(@.el).html(@template)

最佳答案

您在进行更改后注册以收听该更改

改变属性->触发事件->无人监听->注册监听

所以改变这个:

initialize: ->
@Properties = new PropertyCollection

@Properties.attr("limit", "1000") #Change the limit attr to "1000"

#Listen for the change after the firing of the change (why?!!!)
@Properties.on("change", ->
alert("Attribute has been changed!")
)

对此

initialize: ->
@Properties = new PropertyCollection

#Listen for the change BEFORE you make it (yes yes yes!!!)
@Properties.on("change", ->
alert("Attribute has been changed!")
)

@Properties.attr("limit", "1000") #Change the limit attr to "1000"

希望这对您有所帮助!

关于javascript - 在 Backbone 中跨不同类触发和监听事件 - 在 CoffeeScript 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11986075/

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