我想知道注入的对象是如何在控制器中作用的。
假设我创建了一个服务来返回几个月的数组天数,然后我将其注册并将其注入名为BookingsController的控制器中,就像这样
Todos.Bookingmonth = Ember.Object.extend({
currMonth: 1,
currYear : 2014,
names : [ 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat' ],
//
setCurrMonthYear: function(currMonth, currYear){
//
this.currMonth = parseInt(currMonth, 10);
this.currYear = parseInt(currYear, 10);
},
//
getDaysArray : function () {
//
var date = new Date(this.currYear, this.currMonth - 1, 1),
days = [];
while (date.getMonth() === this.currMonth - 1) {
//
days.push({num : date.getDate(), name : this.names[date.getDay()]});
date.setDate(date.getDate() + 1);
}
//
return days;
}
});
Todos.register('bookingmonth:main', Todos.Bookingmonth);
Todos.inject('controller:bookings', 'bookingmonth', 'bookingmonth:main');
Todos.BookingsController = Ember.ArrayController.extend({
title : "Bookings listing",
monthDays : this.get('bookingmonth').getDaysArray(),// this.get is undefined!!
actions: {
}
});
我想要这样做的原因是因为我需要访问我的预订模板中的n个日期数组,但这与应用程序逻辑无关,它既不属于主模型数据(这是预订的固定,顺便说说)。我只想在我的控制器中生成数组并将其分配给属性(按照上面的代码),然后在模板中循环它,就像这样
<ul id="month-bookings-slots">
{{#each slot in monthDays}}
<li>SLOT</li>
{{/each}}
</ul>
我知道我可能会将while日期逻辑从服务转移到控制器本身,作为私人&#39;控制器的方法,然后可能更容易将其返回的日期数组分配给控制器的通用属性,但是想尝试通过服务来实现,因为它似乎更适合逻辑分离
也许我对注入的依赖项的范围感到有点困惑,听听我错过的内容/任何建议会很好。感谢
答案 0 :(得分:0)
id
未定义,因为它是在创建ArrayController的上下文中调用的。
你必须把它放进
this.get
或
monthDays: function(){return this.get(...);}
或在创建ArrayController之后调用的其他一些构造。
考虑到您的预期用途,后者似乎是正确的。