我在 ember 应用程序中有一个 Handlebars 模板。它接受一个数组。我目前这样声明数组
模板:
{{Gd-radio-input content=radioContent value="blue"}}
Javascript:
App.IndexController = Em.Controller.extend({
radioContent: [
{label: 'Red', value: 'red'},
{label: 'Blue', value: 'blue'},
{label: 'Green', value: 'green'},
{label: 'Yellow', value: 'yellow'},
]
});
出于我的目的,有时我想在模板中定义数组。
我试过了,但是 javascrip 讨厌我:
{{Gd-radio-input content="[
{label: 'Red', value: 'red'},
{label: 'Blue', value: 'blue'},
{label: 'Green', value: 'green'},
{label: 'Yellow', value: 'yellow'},
]" value="blue"}}
错误:
Assertion failed: The value that #each loops over must be an Array. You passed [
{label: 'Red', value: 'red'},
{label: 'Blue', value: 'blue'},
{label: 'Green', value: 'green'},
{label: 'Yellow', value: 'yellow'},
]
Uncaught TypeError: Object [
{label: 'Red', value: 'red'},
{label: 'Blue', value: 'blue'},
{label: 'Green', value: 'green'},
{label: 'Yellow', value: 'yellow'},
] has no method 'addArrayObserver'
最佳答案
您可以使用 ember g helper arr
生成一个 helper,然后输入以下代码:
{{Gd-radio-input content=(arr
(hash label='Red' value='red')
(hash label='Blue' value='blue')
(hash label='Green' value='green')
(hash label='Yellow' value='yellow')
) value="blue"}}
说明:默认助手已经返回了一个参数数组。 hash
帮助程序生成对象。我认为 arr
助手应该已经在默认的模板助手中了,顺便说一句。
p.s.: 感谢@locks on slack channel
关于javascript - 在 Handlebars / Ember 模板中定义数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20327796/