Ember嵌套视图

时间:2015-03-23 16:59:45

标签: ember.js

关于处理此案例的嵌套视图的'余烬方式'的问题。使用ember-cli - 我有一个名为'customers'的资源。视图层次结构为:

customers
+- customers.index
+- customers.show

我想在客户级别放置一个横幅,但其部分内容在.index或.show级别指定。

因此,我向客户控制器添加了一个属性,并在客户模板中显示该属性。

import Ember from 'ember';

export default Ember.Controller.extend({
  headingText: 'initial'
}

模板

<h3>{{ headingText }}</h3>
{{ outlet }}

子控制器可以看到值,但在更改它时 - 视图不会改变(原型-vs-继承?)

为了从子控制器更改headingText,我需要在每个子节点中执行此操作:

needs: "customers",
headingText: Ember.computed.alias("controllers.customers.headingText")

这是'蠢货'吗?似乎应该有一种更简单的方法来在没有样板的情况下冒泡信息(客户控制器上的方法或其他东西)。

假设标题文本将包含已解析模型的信息,那么设置它的最佳位置在哪里?在路线? aftermodel?

由于

1 个答案:

答案 0 :(得分:0)

在子路由中,您可以考虑使用setupController挂钩来修改父路由的属性。

Ember API docs for setupController

setupController内,您可以使用以下语法在与当前路线直接关联的路线上获取和设置属性:

在儿童路线中:

setupController(controller, model) {
    this.controllerFor('customers').set('headingText', 'My awesome new header for the child route.');
}

控制器是单例,并且保持其状态,因此您可能需要在每个相关路由文件中将headingText属性显式设置为正确的值。

Here's more info on the controllerFor route property.

相关问题