App.IndexRoute = Ember.Route.extend({
model: function() {
return Ember.Object.create({name: 1})
},
setupController: function(controller, model) { // 他省略了setupController
controller.set('model', model) // 这里的model就是上面的 Ember.Object.create({name: 1})
controller.set('age', 2) // 模板里面 {{age}}
}
})
App.IndexController = Ember.ObjectController.extend({ // 这里用了ObjectController 不是Controller
address: 'bar' // 模板里面 {{address}}
})
ObjectController的作用是 所有没有的属性都自动代理到model上面去. 比如
{{age}} // 2 controller里面已经有了
{{name}} // 1 controller里面没有name属性呀, 代理到{{model.name}}
{{model.name}} // 1 和上面一样的
进一步
App.IndexController = Ember.ObjectController.extend({
nameDisplay: function() {
return 'Hi, ' + this.get('name') // Hi, 1 this.get('name') controller里面没有name属性呀, 代理到{{model.name}}
}.property('name')
})
Controller 的作用就是连接 Model + Template (像中间层)
默认的setupController是