【问题标题】:View binding undefined - Ember.js查看绑定未定义 - Ember.js
【发布时间】:2014-10-11 20:30:51
【问题描述】:

所以我有一个有趣的问题。我有一个侧边栏,SortableStopView,它扩展了 CollectionView,其中我有一个可滚动的、可排序的“站点”列表,用户可以单击以访问该站点的摘要页面。

还有 SortableStopsController,一个 ArrayController 用于按display_order 对停靠点进行排序。事后看来,这个 ArrayController 不是必需的,但我不认为这是我的问题。

App.SortableStopController = Ember.ArrayController.extend
    sortProperties: ['display_order']
    loaded: false
    stopsMoved: false

    observeStuff: (->
      console.log 'stops', @get 'content'
      console.log 'loaded', @get 'loaded'
    ).observes 'loaded', 'content'

现在,在 StopsIndexRoute 中,我有 configController。 (我所有的路由都扩展 App.AuthenticatedRoute 覆盖 setupController,运行一些自定义代码,然后调用 configController。这是我在整个应用程序中使用的而不是 setupController。)在这里,我将 SortableStopController 的内容设置为停止我通过 Ember Data 获取并告诉控制器该数据已加载。

App.StopsIndexRoute = App.AuthenticatedRoute.extend
    configController: (controller, model) ->
    self = this

    sortableStopCtlr = @controllerFor 'sortableStop'

    @store.find('stop', route_id: model.get("route_id")).then (stops) ->
        sortableStopCtlr.set 'model', stops
        sortableStopCtlr.set 'loaded', true

这一切都被插入到stops.hbs(它需要在所有停靠路线上)

{{view "sortableStop" content=controllers.sortableStop.arrangedContent loadedBinding="controllers.sortableStop.loaded" movedBinding="controllers.sortableStop.stopsMoved"}}

问题是以下观察者注销了this is loaded undefined。如果我注销content,也会出现同样的情况。

App.SortableStopView = Ember.CollectionView.extend
    observeLoaded: (->
        console.log 'this is loaded', @get 'loaded'
    ).observes 'loaded'

这里没有显示,但是 StopsController、StopsIndexController 和 StopsEditController 在它们的needs 数组中都有'sortableStop'。

有什么想法吗?

【问题讨论】:

    标签: javascript ember.js coffeescript


    【解决方案1】:

    如果您使用的是最新版本的 Ember,则在您的控制器完全设置好之前,您的观察者不会触发。要修复它,请将on('init') 添加到您的观察者:

    observeLoaded: (->
      console.log 'this is loaded', @get 'loaded'
    ).observes('loaded').on('init')
    

    【讨论】:

    • 是的,我在找那个。事实并非如此。不过谢谢。当我来自包含此视图并在 SortableStopController 中设置数据的另一条路线时,此方法有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多