Ember hasMany 和数组的大小

Ember hasMany and size of array(s)

我有一个关系 hasMany,我想获取下一个索引号。所以,在我的控制器中我有:

    nextStepIndex: Ember.computed(function () {
        return this.get('floor').get('steps').get('length') + 1;
    }).property('nextStepIndex')

我也用过:

    nextStepIndex: Ember.computed(function () {
        return this.get('floor').get('steps.length') + 1;
    }).property('nextStepIndex')

但长度始终为0。不保存步数和地板数。所有对象都是用 createdRecord 创建的,步骤是用 pushObject 添加的。

我在步骤关系中看到它们有很多或数组 :

   DS.PromiseManyArray 
   DS.PromiseArray
   ArrayProxy
   MutableArray
   Array

我的 "step" 对象在 ArrayProxy 中。那么当我调用 length 方法时,我将获得什么尺寸?

因此,如果我可以在 {{#each}} 模板指令中获取子记录,我希望在调用长度方法时具有正确的大小。

我知道我可以获得 ArrayProxy 大小,但我不想对实现做出假设。

看来你的"property"设置不正确

property('floor.steps.[]')

另请记住,除非您从模板调用它或在 component/controller 中的另一个关系中使用它,否则它不会被触发。

顺便说一句,如果您处理的是异步 "steps",那么计算 属性 将不会开箱即用。您需要使用

nextStepIndex: function() {
        var stepsPromise = this.get('floor.steps');

        return DS.PromiseArray.create({
            promise: stepsPromise.then(function(steps) {
                // return your logics here
            })
        });

 }.property('floor.steps.[]')