Controllers计算属性中未定义模型属性

时间:2013-05-12 19:47:13

标签: ember.js

我有一个带有计算属性formattedNotificationTime的Controller。这应该从其底层模型连接两个属性(notifHoursnotifMinutes)并将结果返回到屏幕。

我的问题是,当从控制器访问时,模型属性总是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')
});

1 个答案:

答案 0 :(得分:0)

问题可能在控制器中,因为您错误地声明属性是从自身计算的。试试这个

App.SettingsAccountController = Ember.ObjectController.extend({
    formattedNotificationTime: function() {
        return this.get('model.notifHours') + ':' + this.get('model.notifMinutes');
    }.property('model.notifHours', 'model.notifMinutes')
});