我有一个带有计算属性formattedNotificationTime
的Controller。这应该从其底层模型连接两个属性(notifHours
和notifMinutes
)并将结果返回到屏幕。
我的问题是,当从控制器访问时,模型属性总是undefined
- 当使用{{ model.notifHours }}
从模板访问时,为混合添加一些混淆,它们会正确返回到屏幕p>
我怀疑我做了一些根本错误的事情/在以下3段代码中有一个很大的误解:
模型
这似乎可以在其他所有情况下找到 - 最初加载一个未填充的实例,然后由AJAX请求/承诺设置。
App.Member = Ember.Object.extend({
load: function () {
var member = this;
return $.ajax({
url: '/members/' + this.get('id'),
dataType: 'json'
}).then(function (m) {
member.setProperties(m);
return member;
});
}
});
路线
在输入路线时,我创建了一个Member
的实例,其中包含一个ID,然后填入setupController
。同样,这似乎适用于大多数情况(我的模板中的模型数据填充了许多文本框)。
App.SettingsRoute = Ember.Route.extend({
model: function () {
return App.Member.create({ id: App.memberId });
},
setupController: function (controller, model) {
model.load();
}
});
控制器
这是我遇到问题的地方......无论我如何尝试从模型中访问notifHours
/ notifMinutes
,它们始终会返回undefined
。值得一提的是,我还试过语法.property('model')
而没有任何运气。
我怀疑这个计算属性的实现从根本上是错误的,我只是不确定如何/为什么..
App.SettingsAccountController = Ember.ObjectController.extend({
formattedNotificationTime: function() {
return this.get('model.notifHours') + ':' + this.get('model.notifMinutes');
}.property('formattedNotificationTime')
});
答案 0 :(得分:0)
问题可能在控制器中,因为您错误地声明属性是从自身计算的。试试这个
App.SettingsAccountController = Ember.ObjectController.extend({
formattedNotificationTime: function() {
return this.get('model.notifHours') + ':' + this.get('model.notifMinutes');
}.property('model.notifHours', 'model.notifMinutes')
});