我刚刚将backbone.marionette从0.9.3更新到v1.0.0-beta4,以下代码正在破解:
PlansApp.CompositeView = Backbone.Marionette.CompositeView
PlansApp.ItemView = Backbone.Marionette.ItemVie
PlansApp.Plans.PlansList = do ({PlansApp, Backbone} = window) ->
PlansList = {}
PlansListItemView = PlansApp.ItemView.extend
initialize: ->
@bindTo this.model, "change", this.modelChanged
modelChanged: (model, value)->
this.render()
this.$el.effect("highlight", {}, 6000)
window.addTeachMeHandlers() if model.get 'IsFirst
它特意打破this.render()并显示错误消息:
未捕获的TypeError:对象[object Object]没有方法'render'
此代码以前用于升级之前的工作。
从查看源代码,ItemView仍然有一个render方法,所以我猜测上下文错误或者bindTo已经改变了。
我将下划线从1.3
升级到1.4.1答案 0 :(得分:0)
在之前的某个版本中,我必须更改EventBinder附加到视图的方式,以避免与Backbone.StickIt插件发生冲突。此更改意味着事件绑定的默认上下文不再是视图,您必须在调用bindTo
时指定第4个参数 - 上下文。它的工作方式与Backbone的on
方法相同:
@bindTo this.model, "change", this.modelChanged, this