0

我对如何在 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()) 才能获取和设置值?

4

1 回答 1

3

关于将 a设置ModelController.

在 aRoute中,模型可以是您定义的任何对象或对象集合。有大量适用的约定,在大多数情况下,您不必指定任何内容,因为它使用各种对象的名称来指导自己构建查询并设置控制器的内容,但是,在您的特定代码,您将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'));

于 2013-04-08T19:13:07.350 回答