我对如何在Ember.js中从我的(动态)模型设置检索信息感到困惑
这是我的模型(到目前为止工作):
App.Router.map(function() {
this.resource('calendar', { path: '/calendar/:currentMonth'});
});
App.CalendarRoute = Ember.Route.extend({
model: function (params) {
var obj = {
daysList: calendar.getDaysInMonth("2013", params.currentMonth),
currentMonth: params.currentMonth
};
return obj;
}
});
我只想取回'currentMonth'属性:
App.CalendarController = Ember.Controller.extend({
next: function() {
console.log(this.get('currentMonth'));
}
});
但是我收到了“未定义”的错误。
我是否必须显式声明我的模型(Ember.model.extend())才能获取和设置值?
答案 0 :(得分:3)
在将Model
设置为Controller
方面,您可能不了解conventions。
在Route
中,模型可以是您定义的任何对象或对象集合。有很多适用的约定,在大多数情况下,您不必指定任何内容,因为它使用各种对象的名称来指导自己构建查询并设置控制器的内容,但是,在您的特定代码,您将返回obj
作为模型。
Ember提供了一个名为setupController
的钩子,它将此对象设置为控制器的content
属性。例如:
App.CalendarRoute = Ember.Route.extend({
model: function (params) {
var obj = {
daysList: calendar.getDaysInMonth("2013", params.currentMonth),
currentMonth: params.currentMonth
};
return obj;
},
setupController: function(controller, model) {
// model in this case, should be the instance of your "obj" from "model" above
controller.set('content', model);
}
});
话虽如此,您应该尝试console.log(this.get('content.currentMonth'));