javascript - 在模板中迭代 Controller 属性的正确方法是什么?

标签 javascript ember.js

目前还不完全清楚如何迭代模板中的 Controller 属性。我偶然发现了一个方法:

{{#each-in this as |key value|}}
    {{key}}: {{value}}
{{/each-in}}

这样的工作,但除了属性之外,它还输出一些内部函数:

q: shirt
search_page: 3
_qpDelegate: function (prop, value) { var qp = map[prop]; _this._qpChanged(prop, value, qp); return _this._activeQPChanged(map[prop], value); }

我的 Controller 看起来像:

import Ember from 'ember';

export default Ember.Controller.extend({

    queryParams: [
        'q',
        'search_page'
    ],
    q: 'shirt',
    search_page: 3

});

有没有办法迭代和排除函数?

最佳答案

由于看起来您只需要出于调试目的执行此操作,因此一种可能的解决方案是创建一个自定义帮助程序来过滤掉函数(或您想要的任何其他内容):

// helpers/debug-filter.js
export function debugFilter([value]) {
  return Ember.typeOf(value) !== 'function';
}

export default Ember.Helper.helper(formatCurrency);

你的 Controller 模板

{{#each-in this as |key value|}}
  {{#if (debug-filter value)}}
    {{key}}: {{value}}
  {{/if}}
{{/each-in}}

关于javascript - 在模板中迭代 Controller 属性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129264/

相关文章:

javascript - 使用多个 JSON Api URL

javascript - 在 iframe 中将参数传递给 ember

javascript - 在 application.create() 之外创建时将数据加载到 ember 路由器的根路由中

ember.js - 路线更改后子 Controller 观察者仍然处于事件状态

javascript - 如何修复 Ajax 图像上传 - 返回的响应是 HTML 而不是图像

javascript - 为什么此代码在 chrome、firefox 等中不起作用?

javascript - 窗口滚动后淡入和淡出多次发生

JavaScript 持续检查一个变量

javascript - 销毁 ev.preventDefault()

model - Ember.js:计算所有子模型的属性总和