从模板访问 ember js 对象

Access ember js object from template

本文关键字:js 对象 ember 访问      更新时间:2023-09-26

我有一个余烬控制器,如下所示

App.IndexController = Ember.Controller.extend({
   edwin:{
    uno:'hola',
    dos:'hola dos',
    tres:'hola tres'
  }
});

我我的模板我需要属性 edwin 的值,如果我得到属性作为

  <script type="text/x-handlebars" data-template-name="index">
  {{edwin.dos}}
  </script>

它工作正常,但是当我尝试时,我需要从其他变量中选择对象元素

 <script type="text/x-handlebars" data-template-name="index">
  {{edwin['dos']}}
  </script>

 <script type="text/x-handlebars" data-template-name="index">
  {{edwin[myvar]}}
  </script>

我无法显示该值这是我的JSBIN浏览器

http://emberjs.jsbin.com/xupuse/1/edit

任何建议

最接近的,你会得到它基于另一个属性在控制器中创建一些动态属性。 真正的问题是,如果其他属性发生变化,余烬将不知道更新它。 在下面的示例中,如果 edwin.xxxx 更改了计算属性将不知道*,而如果 dynamo 更改,它将知道(因为它正在监视它)。

App.IndexController = Ember.Controller.extend({
  edwin:{
    uno:'hola',
    dos:'hola dos',
    tres:'hola tres'
  },
  dynamo: 'uno',
  dynamoProperty: function(){
    return this.get('edwin.' + this.get('dynamo'));
  }.property('dynamo')
});

http://emberjs.jsbin.com/beziq/1/edit

*我有点躺在这里,您可以在 edwin 上指定每个属性,无论它是否适用于 dynamoProperty a la

  dynamoProperty: function(){
    return this.get('edwin.' + this.get('dynamo'));
  }.property('dynamo', 'edwin.{uno,dos,tres}')

http://emberjs.jsbin.com/beziq/2/edit