2013-04-08 125 views
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())才能获取和设置值吗?

回答

3

有一些conventions,您可能不知道将Model设置为Controller

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'));