升级到Ember 1.0计算属性不再适用于视图

时间:2012-08-29 13:50:12

标签: javascript ember.js

我从0.97升级,我相信甚至使用了弃用警告告诉我的配置设置,但这并没有阻止我的应用程序完全破坏升级

我的车把代码有这个

<script type="text/x-handlebars" data-template-name="say-hello">
    {{name}}</br>
    {{hello}}
</script>​

我的观看代码就是这个

App = Ember.Application.create();

App.myView = Ember.View.create({
    templateName: 'say-hello',
    nameBinding: 'App.arrayProxy.name',
    helloBinding: 'App.arrayProxy.hello',
}).append();

App.arrayProxy = Ember.ArrayProxy.extend({
    name: "test",
    hello: function(){
      return 'hello ' + this.get('name')
    }.property('name')
})

Niether属性显示在视图中。就像绑定甚至不再工作一样。即使我将一个console.log添加到hello它甚至都不会被调用。由于某些原因,在ember 1.0中处理完全不同的属性,这是一个非常大的PITA。如果我必须添加或删除某些东西,有没有人对我在最新版本中如何做到这一点有任何见解?

更新:这是一个jsfiddle来展示它是如何工作的http://jsfiddle.net/664H9/

1 个答案:

答案 0 :(得分:4)

你的jsfiddle有三件事不起作用:

  • 追加视图。对我来说,最好声明一个默认模板(没有data-template-name),并引用其中的视图。 Ember将为您创建视图

  • 从1.0开始,要将视图的属性调用到模板中,您必须在其前面添加view

  • 您的绑定无法正常工作,因为您没有创建数组代理的实例,但您只是创建了一个类(我认为即使在0.9.7中,这也不起作用。

这是一个有效的jsfiddle:http://jsfiddle.net/Sly7/664H9/22/

<script type="text/x-handlebars">
  {{view App.MyView}}
</script>

<script type="text/x-handlebars" data-template-name="my-view">
  {{view.name}}</br>
  {{view.hello}}
</script>​
App = Ember.Application.create();

App.ApplicationView = Ember.View.extend({
  nameBinding: 'App.arrayProxy.name',
  helloBinding: 'App.arrayProxy.hello',
});

App.arrayProxy = Ember.ArrayProxy.create({
  name: "test",
  hello: function(){
    return 'hello ' + this.get('name')
  }.property('name')
});

App.initialize();