可以将“模型”视为EmberJS

时间:2016-02-06 15:38:13

标签: javascript ember.js

我有3个相关问题;

Q1: 在EmberJS中,可以将“模型”视为特殊控制器属性。

我这样说,考虑一个控制器(模型返回firstName& lastName属性),我有一个属性“isVisible”

所以在模板中,我会说

{{#if isVisible}}
Hello {{model.firstName}}, {{model.lastName}}
{{/if}}

现在,“isVisible”是控制器属性并直接引用,而为了显示firstName / lastName,我们说model.firstName& model.lastName

这使得它看起来像“模型”是在控制器上定义的某种特殊属性,有点类似于“isVisible”

Q2: 另外,我假设模型的值总是由相应路径的模型钩子返回。不确定还有很多其他方法吗?

Q3: “模型”也是Ember认可的特殊/保留关键字。我问这个,因为我观察过

self.controllerFor('someroute').get('model.someParam')

如果你能指出Ember处理这个“model”关键字的get / set Ember库代码,那就太棒了。

1 个答案:

答案 0 :(得分:2)

A1: model属性不是控制器的特殊属性,它可能看起来很特殊,因为它是route在{{3}中设置的自动/(幕后)方法,您可以覆盖它并使用其他属性名称代替

setupController(controller, model) {
  controller.set('person', model);
}

并在您的模板中:

{{#if isVisible}}
Hello {{person.firstName}}, {{person.lastName}}
{{/if}}

现在您将模型设置为属性person而不是控制器中的model

A2:,因为控制器中的model只是路由设置的属性,您可以在应用程序的任何位置设置/更改它(虽然这可能是不好的做法),正确的地方设置模型/数据到控制器的路径setupController()挂钩(如上所示)。

A3: 模型不是保留关键字