2

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

我的问题是模型属性总是undefined在从控制器访问时 - 给混合添加一些混乱,当使用从模板访问时它们正确返回到屏幕{{ model.notifHours }}

我怀疑我在做一些根本错误的事情/在以下 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')
});
4

1 回答 1

0

The problem could be in the controller, because you are wrongly stating that property is computed from itself. Try this

App.SettingsAccountController = Ember.ObjectController.extend({
    formattedNotificationTime: function() {
        return this.get('model.notifHours') + ':' + this.get('model.notifMinutes');
    }.property('model.notifHours', 'model.notifMinutes')
});
于 2013-05-13T15:07:03.813 回答