我有 CalendarController,它使用需求 api 访问 AppointmentController,目的是过滤内容 AppointmentController 并仅返回event.start。但我已经尝试过filter()和forEach() ,它总是返回所有不同的属性,而不是只返回event.start的所有可用时间。当我使用map()时,它只会在控制台中返回我想要的event.start值,但随后把手无法显示任何内容。
u = App.__container__.lookup("controller:appointments");
y = u.get('content');
y.map(function(appointee) { return appointee.get('event.start') });
返回:
[Thu Jul 18 2013 01:00:00 GMT+0100 (GMT Daylight Time), Thu Jul 25 2013 01:00:00 GMT+0100 (GMT Daylight Time), Thu Jul 25 2013 01:00:00 GMT+0100 (GMT Daylight Time)]
当我们使用map()和 calendars 模板时的jsfidle什么也不显示。这个jsfiddle使用FILTER()和日历模板显示内容,但不仅仅是 event.start,它返回其所有内容并且不过滤任何内容。
App.AppointmentsController = Ember.ArrayController.extend({ });
Calendarscontroller todayEvent属性使用filter():
App.CalendarController = Em.ObjectController.extend({
needs: ['appointments'],
todayEvent: function(){
var _self = this;
var appoint = _self.get('controllers.appointments');
var appCont = appoint.get('content');
return appCont.filter(function(appointee) {
return appointee.get('event.start');
});
}.property()
});
注意我添加了 {{name}} 属性来证明todayEvent 属性返回的内容不是由event.start过滤,而是仅返回“event.start”,而是返回所有属性。
<script type="text/x-handlebars" data-template-name='calendar'>
<h1> from todayEvent</h1>
{{#each todayEvent}}
{{name}}<br/>
{{event.start}}<br/>
{{/each}}
路由器
App.Router.map(function() {
this.route('events');
this.resource('appointments');
this.route('calendar', {path: '/cal'});
});
使用 ember-model: :
App.Appointment = Ember.Model.extend({
name: Ember.attr(),
event : Ember.belongsTo('App.Event', {key: 'event_id'})
});
App.Event = Ember.Model.extend( {
title: Ember.attr(),
start: Ember.attr(Date),
end: Ember.attr(Date),
allDay: Ember.attr(Boolean),
appointments: Ember.hasMany('App.Appointment', {key: 'appointment_ids'})
});