【问题标题】:Ember.js routing with custom controller mapping带有自定义控制器映射的 Ember.js 路由
【发布时间】:2012-11-02 14:14:07
【问题描述】:

我似乎无法在 Route.connectOutlets 方法中指定自定义控制器。 这个想法是我不想为每个视图创建空控制器,因为我不相信这首先是正确的实现。 简而言之,如果我采用Gordon Hempton's example 并稍微更新路由器项目/项目路由中的代码

item: Ember.Route.extend({
      route: '/:item_id',
      connectOutlets: function(router, context) {
        var item = router.getPath('itemsController.content').objectAt(context.item_id);
        router.get('itemController').set('content', item);
        router.get('applicationController').connectOutlet('item');
      }
    })

item: Ember.Route.extend({
route: '/:item_id',
connectOutlets: function (router, context) {
    var item = router.getPath('itemsController.content').objectAt(context.item_id);
    var applicationController = router.get('applicationController');
    applicationController.connectOutlet({ 
        viewClass: router.namespace.ItemView, 
        context: item, 
        controller: applicationController 
    });
  }
})

项目选择停止工作,没有任何错误。 是我在代码中出错了,还是不支持控制器的多个视图的场景?

更新:

ItemView模板如下:

<script type="text/x-handlebars" data-template-name="item">
  <h1>{{title}}</h1>
  {{{description}}}
</script>

【问题讨论】:

    标签: routes ember.js


    【解决方案1】:

    您是否尝试过使用相关项目作为您的控制器?这样您就可以避免创建未使用的空控制器,并使您的项目内容可用于您的视图。

    applicationController.connectOutlet({ 
        viewClass: router.namespace.ItemView, 
        controller: item
    });
    

    【讨论】:

    • applicationController.connectOutlet 之前添加 applicationController.set('content', item); 并删除上下文参数没有帮助。
    • 我指的是项目“var item = router.getPath('itemsController.content').objectAt(context.item_id);”。尝试将 applicationController 出口的控制器设置为该对象。操作 applicationController 并将其自身连接为出口控制器似乎是您的问题。
    • 将 connectOutlet 调用更新为 applicationController.connectOutlet({ viewClass: router.namespace.ItemView, context: item, controller: router.get('itemsController') }); 会引发错误“Object # has no method 'addArrayObserver'”
    • 是的,它正在工作。显然这是一个 hack - 我无法想象控制器应该是控制器类实例。我希望默认情况下视图附加到调用其 connectOutlet 方法的控制器。从 ASP.NET MVC 的角度来看,Ember 似乎有很多惊喜。
    • Ember 世界中控制器的概念比 ASP.NET MVC 世界松散得多。任何对象和/或集合都可以是控制器:(stackoverflow.com/questions/8864337/…)。
    猜你喜欢
    • 2021-12-07
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2013-08-23
    相关资源
    最近更新 更多