为什么没有把手"如果" helper调用实际模型计算属性?

时间:2016-10-13 17:47:55

标签: ember.js handlebars.js

我在Ember维护一个应用程序,这个"计算属性"从来没有真正由模板中的if块助手计算。

型号:

var item = App.Item.create({
    isAddedToCart: function () {
        console.log('addedToCart method has been called');
        return false;
    }.property()
});

模板:

{{#if item.isAddedToCart}}
    {{log 'true'}}
{{else}}
    {{log 'false}}
{{/if}}

在模板中的组件中,console.log()永远不会被调用,但是如果它是真的,那么函数似乎会被测试。我的方法有问题吗?

编辑:应用程序是用Ember版本1.7编写的(我知道......)

1 个答案:

答案 0 :(得分:0)

您目前正在使用哪些版本,实际上我尝试了您在ember 1.12.2版中所做的,我得到了以下断言,清楚地解释了如何解决它。

  

处理路径时出错:索引断言失败:Ember.Object.create不再支持定义计算属性。在调用create()之前使用extend()或reopen()定义计算属性。错误:断言失败:Ember.Object.create不再支持定义计算属性。在调用create()之前使用extend()或reopen()定义计算属性。

我创建了sample twiddle来演示用法,

控制器/ application.js中

import Ember from 'ember';

var App.Item = Ember.Object.extend({    
});
App.Item.reopen({
  isAddedToCart: function () {
        console.log('addedToCart method has been called');
        return false;
    }.property()
});
export default Ember.Controller.extend({
  appName: 'Ember Twiddle ',
  itemObj : App.Item.create(),
});

并在application.hbs中,

{{itemObj.isAddedToCart}}

如果余烬允许你做了什么,可能是早期版本,可能存在以下问题,
- 确保在模板中可以访问item属性 - 检查是否覆盖isAddedToCart

的任何地点或手册