gpt4 book ai didi

javascript - Ember.js 相关对象数组的长度

转载 作者:行者123 更新时间:2023-11-28 08:00:41 25 4
gpt4 key购买 nike

我正在使用 Ember Data 和 Ember CLI。我在两个模型之间有一个简单的一对多关系。我正在尝试创建一个计算属性,该属性返回附加到当前模型的项目数。

models/account.js

// Account model
import DS from 'ember-data';

export default DS.Model.extend({
name: DS.attr('string'),
notes: DS.hasMany('note', { async: true })
});

models/note.js

// Note model
import DS from 'ember-data';

export default DS.Model.extend({
body: DS.attr('string'),
date: DS.attr('number'), // unix timestamp
account: DS.belongsTo('account', { async: true })
});

controllers/account/index.js

// account/index controller
import Ember from 'ember';

export default Ember.ObjectController.extend({
oldNotesCount: function() {
var notes = this.get('notes');
console.log('=-=', notes.length); // undefined *****
return notes.length;
}.property('notes.@each')
});

为什么notes.length未定义

我已经简化了这个例子...在我的情况下我不能使用 {{notes.length}} 因为将会进行更多的计算 - 这只是第一步。

最佳答案

您将 notes 关联标记为异步,因此 this.get('notes') 返回一个 promise 。 Promise 没有 length 属性,因此会出现 undefined

要获取异步关联中的数据,请在返回的 Promise 上调用 then 并以函数作为参数。关联数据将作为第一个参数传递给该函数。

export default Ember.ObjectController.extend({
oldNotesCount: function() {
var _this = this;
this.get('notes').then(function(notes){
_this.set('oldNotesCount', notes.get('length');
});
return null;
}.property('notes.@each')
});

关于javascript - Ember.js 相关对象数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25436210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com