我正在創建一個非常簡單的骨幹應用程序來熟悉框架。除了將模型更改事件綁定到我認爲的函數外,所有工作都正在進行。我檢查了以前的SO問題,但都沒有幫助。綁定到模型更改事件不能在backbone.js中查看
我的模型有一個變量'counter'。 View有兩個按鈕,可以增加或減少模型的「計數器」。簡單的東西。這一切都工作正常,但是當我嘗試在視圖中偵聽模型更改事件時,我僅在創建模型時(我創建默認值時纔會收到一次通知)。
我知道計數器正在更新,因爲如果我在更新模型後手動調用渲染,我可以看到效果,但爲了更好地使用mvc-ish結構,我希望查看變化事件的通知以及更新自己。
下面是咖啡代碼。
$ ->
class Count extends Backbone.Model
defaults: counter : 0
change: -> console.log('changed')
class Spinner extends Backbone.View
el: $('#counterView')
initialize: =>
@model = new Count()
@model.bind 'change' , @update()
events:
'click button#incBtn' : 'inc'
'click button#decBtn' : 'dec'
inc: ->
@model.set counter : @model.get('counter') + 1
dec: ->
@model.set counter : @model.get('counter') - 1
update: ->
console.log('update')
$('#num').html(@model.get 'counter')
view = new Spinner()
HTML:
<body>
<div id="counterView">
<button id="incBtn">Increment</button>
<button id="decBtn">Decrement</button>
<div id="num">Number</div>
</div>
</body>
在此先感謝。 b
感謝您對Linus的反饋。不幸的是,它沒有解決問題。該視圖仍未被通知模型更改。模型正在更新,並且更改事件像以前一樣被調度,但視圖的更新函數從未聽說過它。 – 2012-02-28 19:15:03
你確定'console.log('update')'不能運行?在這之後,我看到一個問題:'@ model.get'counter''不起作用,因爲'@ update'的上下文在將它傳遞給'@ model.bind'時會丟失。輕鬆修復:用胖箭頭定義'update'('=>')。 – 2012-02-28 19:20:20
感謝@TrevorBurnham,上面已更新。 – 2012-02-28 23:17:38