我有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库代码,那就太棒了。
答案 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: 模型不是保留关键字