我在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编写的(我知道......)
答案 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