- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个非常简单的主干应用程序来熟悉该框架。在我看来,除了将模型更改事件绑定(bind)到函数之外,一切正常。我检查了之前关于 SO 的问题,但没有一个有帮助。
我的模型有一个变量“计数器”。 View 有 2 个按钮,可增加或减少模型的“计数器”。简单的东西。这一切都工作正常,但是当我尝试在 View 中监听模型更改事件时,我只在模型创建时收到通知(我假设是在创建默认值时)。
我知道计数器正在更新,因为如果我在更新模型后手动调用渲染,我可以看到效果,但为了更好的 mvc-ish 结构,我想查看更改事件的通知并更新本身。
下面是coffeescript代码。
$ ->
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>
提前致谢。
最佳答案
您的错误在这里:
@model.bind 'change' , @update()
您告诉它的是将 change
事件绑定(bind)到 @update()
返回(当您想要绑定(bind)它时)到@update
本身。所以应该是:
@model.bind 'change' , @update
(不带括号)。事实上,Spinner.update
会立即在 Spinner.initialize
上执行,正如您发现的那样。更多注意事项:
document.ready
创建类。您可以先这样做(在 document.ready
之外),然后仅在 document.ready
上实例化模型、 View 等。在 View 中创建新模型似乎有点奇怪。您可能想做这样的事情:
view = new Spinner(model: new Count)
编辑: 作为 Trevor Burnham notes below ,您希望在 inc
、dec
和 上使用粗箭头
。已修复如下。=>
>更新
综合起来:
class Count extends Backbone.Model
defaults: counter : 0
change: -> console.log('changed')
class Spinner extends Backbone.View
el: '#counterView'
initialize: =>
@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')
@$el.find('#num').html(@model.get 'counter')
$ ->
view = new Spinner(model: new Count)
关于events - 绑定(bind)到模型更改事件在backbone.js View 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9482950/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!