Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬:计算对象中的键数?_Ember.js - Fatal编程技术网

Ember.js 余烬:计算对象中的键数?

Ember.js 余烬:计算对象中的键数?,ember.js,Ember.js,我的数据大致如下: "id": "1", "slug": "WD", "name": { "en": "Working Draft", "de": "Arbeitsentwurf", "fr": "Version de travail", "ja": "草案", "ru": "Рабочий черновик" } 我将名称对象传递给一个组件: {{title-name name=model.name lang='en'}} 在组件模板中,我想输出翻译

我的数据大致如下:

"id": "1",
"slug": "WD",
"name": {
    "en": "Working Draft",
    "de": "Arbeitsentwurf",
    "fr": "Version de travail",
    "ja": "草案",
    "ru": "Рабочий черновик"
}
我将
名称
对象传递给一个组件:

{{title-name name=model.name lang='en'}}
在组件模板中,我想输出翻译的数量

<p>Translated {{translationCount}} times.</p>

更明确一点似乎有用:

export default Ember.Component.extend({
  translationCount: Ember.computed('name', function() {
    return Object.keys('name').length;
  })
});
请查看此文件以了解其实现

应用程序模板

<h1>Welcome to the {{appName}}</h1>

{{title-name name=data.name lang='en'}}

{{outlet}}
title name.js组件

import Ember from 'ember';
var { computed, get } = Ember;

export default Ember.Component.extend({
  translationCount: computed('name', function() {
    var name = get(this, 'name');
    return Object.keys(name).length;
  })
});
标题名称.hbs组件模板

{{yield}}

{{translationCount}}

请记住,如果对象的关键点在不更改对象的情况下更改,则不会更新此选项。因此,如果您执行了
this.get('name')['newKey']='value'
,则计数不会更改。@GJK提到,如果对象的键更改,我的解决方案不会更新,如果键更改,此解决方案会更新吗?
import Ember from 'ember';
var { computed, get } = Ember;

export default Ember.Component.extend({
  translationCount: computed('name', function() {
    var name = get(this, 'name');
    return Object.keys(name).length;
  })
});
{{yield}}

{{translationCount}}