【问题标题】:subdirectories within ember controller not workingember 控制器中的子目录不起作用
【发布时间】:2015-01-07 20:29:33
【问题描述】:

从这篇文章看来,ember 控制器中的子目录应该可以工作。

https://github.com/ember-cli/ember-cli/issues/1219

但是它对我不起作用。

这是我的代码分支(目录 cm 包含子目录视图):

 /controllers/cm/views/item.js
 /routes/cm/views/item.js
 /templates/cm/views/item.js

当我尝试使用下面的代码在路由中填充模型时,我看到了数据,但是当我将相同的代码放入控制器时,它永远不会被执行。

   model: function(){

            return this.store.find('item',{id: "1"});

          }

router.js 中的入口如下:

   this.resource('cm', {path: '/cm/:id'} , function() {

                this.route('views');
                this.route('views.items', {path: '/views/items'});
       });

显然 ember 无法正确解析控制器。 不知道如何解决这个问题...

【问题讨论】:

    标签: ember.js ember-cli ember-controllers


    【解决方案1】:

    这是因为route 中的model 挂钩与控制器中的工作方式不同。

    route中是一个可以返回promise的方法,路由会等待promise被解析后再设置控制器。

    在控制器中,它只是一个属性,直到你getit 才会执行,即使那样,你也会得到它的承诺。

    【讨论】:

    • 我确实在模板中获取模型属性并将其显示在模板中..当我从控制器获取模型数据时我使用了类似的代码并且它们工作正常..在这种情况下唯一的区别是这里的 items.js 控制器位于 /controllers/cm/views..ember 似乎无法解析子目录的 bcoz ..
    【解决方案2】:

    哇?!子目录工作得很好。首先,我不确定使用viewsitems 作为路由名称是否是最好的主意,因为它们都非常通用,并且也用于一些ember 内部并且可能会混淆事物。声明一个名为 View 的模型甚至可能会破坏您的应用程序中的内容。

    router.js 的控制器/路由/模板结构如下:

    <controllers|routes|templates>/cm.js
    <controllers|routes|templates>/cm/index.js
    <controllers|routes|templates>/cm/views.js
    

    我不确定views.items 会是什么样子,因为这可能更适合将视图作为资源,或者在名称中使用破折号,在这种情况下,路由声明将是this.route('views-items', {path: '/views/items'});

    总的来说,我认为你的路由器定义应该是这样的:

    this.resource('cms', function() {
      this.resource('cm', {path: '/:cm_id'}, function() {
        this.route('views');
        this.route('views-items', { path: '/views/items' });
      });
    });
    

    这并不是开玩笑——我是来帮忙的——但我认为您需要花更多时间阅读 Ember 的路由文档,以了解 Ember 对某些路由器定义所期望的约定。此外,在调试路由器问题时,ember 检查器工具非常有用:https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多