ItemView没有'render'方法

时间:2012-11-05 17:01:30

标签: marionette

我刚刚将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

1 个答案:

答案 0 :(得分:0)

在之前的某个版本中,我必须更改EventBinder附加到视图的方式,以避免与Backbone.StickIt插件发生冲突。此更改意味着事件绑定的默认上下文不再是视图,您必须在调用bindTo时指定第4个参数 - 上下文。它的工作方式与Backbone的on方法相同:

@bindTo this.model, "change", this.modelChanged, this