0

我刚刚将主干.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() 并带有错误消息:

未捕获的类型错误:对象 [对象对象] 没有方法“渲染”

此代码以前用于升级之前的工作。

从源码看,ItemView 还是有 render 方法的,所以我猜测上下文是错误的或者可能是 bindTo 已经改变了。

我也将下划线从 1.3 升级到 1.4.1

4

1 回答 1

0

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

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

于 2012-11-06T12:52:46.133 回答