在车把/ ember模板中定义数组?

时间:2013-12-02 12:00:16

标签: javascript ember.js handlebars.js

我在ember应用程序中有一个把手模板。它接受一个数组。我目前声明这个数组

模板:

  {{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' 

2 个答案:

答案 0 :(得分:1)

您可以使用ember g helper arr生成帮助程序,然后输入以下代码:

{{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助手应该已经在默认的模板助手BTW。

p.s。:感谢松弛频道上的@locks

答案 1 :(得分:0)

不是javascript讨厌你,它是把手/助手。使用内联string绑定内容时,它不会将其转换为数组。

您可以添加某种contentString值,将其从字符串转换回数组并将其设置在内容上。

{{Gd-radio-input contentString="[
    {label: 'Red', value: 'red'},
    {label: 'Blue', value: 'blue'},
    {label: 'Green', value: 'green'},
    {label: 'Yellow', value: 'yellow'},
  ]" value="blue"}}


GdRadioInput = Em.Componenet.extend({
  watchContentString: function(){
    var cs = this.get('contentString');
    if(cs){
      this.set('content', eval(cs));
    } 
  }.on('init')
});

*注意,我并不是真的推荐使用eval,我只是懒惰。

相关问题