【问题标题】:How do I observe properties in an Ember route template?如何观察 Ember 路由模板中的属性?
【发布时间】:2015-10-09 05:01:26
【问题描述】:

我有一条有时会显示对话框的路线。我的想法是创建一个这样的组件:

{{modal-dialog visible=dialogVisible contents=dialogContents}}

路由会根据需要设置 dialogVisible 和 dialogContents 属性,模板会相应地将这些属性传递给 modal-dialog 组件,因此对话框会出现并显示正确的内容。

但这不起作用。模板观察路线的模型,而不是它们的属性。如何访问我的模板中的路由属性?

【问题讨论】:

  • 有很棒的插件ember-modal-dialog。从长远来看,这可能会对您有所帮助。

标签: ember.js properties routes


【解决方案1】:

不确定您的问题是什么。你这样做的方式似乎是正确的。

控制器/index.js

actions: {
      createModal: function(someSpecialContent) {
          this.set('dialogVisible', true);
          this.set('dialogContents', someSpecialContent);
          $('#modalId').modal('show');
      }
  }

模板/index.hbs

{{modal-dialog visible=dialogVisible contents=dialogContents}}

模板/组件/modal-dialog.hbs

{{#if visible}}

    your modal html here 
    ...
   <div class="modal-body">                        
     {{#each contents as |content|}}
          {{content.stuff}}
     {{/each}}
  </div>
    ...

{{/if}}

【讨论】:

  • 我不认为这是一种面向未来的方法:“控制器非常像组件,以至于在未来的 Ember 版本中,控制器将完全被组件取代。” guides.emberjs.com/v2.1.0/controllers
  • @ed94133 逻辑仍然保持不变,而不是控制器,而是带有模型参数的可路由组件。例如 routes/my-dir/index.js 和 components/my-dir/index-js
【解决方案2】:

你试过.observes('model.PROPERTY_NAME')吗?

为什么您要尝试从路线中观察此属性?我以前做过类似的事情,在控制器上设置 dialogVisible 属性似乎更有意义,而不是路由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2017-04-08
    • 1970-01-01
    • 2017-06-15
    • 2015-04-28
    相关资源
    最近更新 更多