【问题标题】:Model properties undefined in Controllers computed property控制器计算属性中未定义的模型属性
【发布时间】:2013-05-12 19:47:12
【问题描述】:

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

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

【问题讨论】:

    标签: ember.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-05
      • 2014-08-19
      • 1970-01-01
      • 2014-08-17
      • 2014-05-26
      • 2017-05-21
      • 2023-04-09
      相关资源
      最近更新 更多