Ember.js 在模板中遍历对象

Ember.js 在模板中遍历对象,ember.js,Ember.js,我的一个数据模型具有以下数据结构: properties : { .... locator_map : { locator1 : locator_doc_id1, locator2 : locator_doc_id2, ... locatorN : locator_doc_idN, }, ... } 在我的模板中,我想提供指向这些文档的链接,但我不知道如何遍历对象locator\u map。我想在这

我的一个数据模型具有以下数据结构:

properties : {
    ....
    locator_map : {
        locator1 : locator_doc_id1,
        locator2 : locator_doc_id2,
        ...
        locatorN : locator_doc_idN,
    },
    ...
}
在我的模板中,我想提供指向这些文档的链接,但我不知道如何遍历对象
locator\u map
。我想在这些方面做点什么:

{{#each locator in this.properties.locator_map}}
    {{#linkTo "locators.show" this.properties.locator_map[locator]}}locator{{/linkTo}}
{{/each}}
但我有两个问题:

  • “断言失败:#each循环的值必须是数组。您传递了[object]”
  • 如何访问该值?我的印象是,
    this.properties.locator\u map[locator]
    不起作用

  • 知道如何行走对象吗?

    这不起作用的原因是,ember框架中的几乎所有内容都是从扩展而来的,但是您的
    定位器则不是,因此您有两个选择:

  • 创建一个自定义把手
    {{{#each}}
    帮助程序,用于处理非用户的
  • 解析从后端返回的数据,并将
    locator\u map
    对象转换为的,这将使对象同时具有绑定意识等
  • 我最近回答了一个类似的问题


    希望有帮助。

    正如@直觉像素所建议的,这是我的转换:

    // Used to represent a generic key:value mapping
    DS.RESTAdapter.registerTransform('dict', {
        serialize: function(data) {
            var dict = {}, element;
            for (var i = 0; i < data.length; i++) {
                element = data[i];
                dict[element.get('key')] = element.get('value');
            }
            return dict;
        },
        deserialize: function(dict) {
            var data = Ember.A(), element;
            for (var key in dict) {
                data.push(Ember.create({ key: key, value: dict[key] }));
            }
            return data;
        }
    });
    
    以及模板上的用法:

    {{#each locator in this.properties.locator_map}}
        {{#linkTo "locators.show" locator.value}}{{locator.key}}{{/linkTo}}
    {{/each}}
    

    谢谢,这很有帮助!添加了带有解决方案的答复。
    {{#each locator in this.properties.locator_map}}
        {{#linkTo "locators.show" locator.value}}{{locator.key}}{{/linkTo}}
    {{/each}}