我尝试与this question
做同样的事情 我真正的问题是为什么他必须在.property()
属性的函数末尾添加errorClass
?有人可以请我指出一份关于这项工作的文件吗?
当我不包含.property()
时,该属性的弦乐功能将作为值放在我的模板中。
车把:
<div class="tab-pane fade show {{loginActiveClass}}" id="login" role="tabpanel">
期望:
<a data-toggle="tab" href="#login" role="tab" class="nav-link active">
当我放弃.property()
:
<a data-toggle="tab" href="#login" role="tab" class="nav-link function loginActiveClass() {
return this.get('page') === 'login' ? 'active' : '';
}">
答案 0 :(得分:0)
在hbs中使用{{att}}
,您可以访问名为att
的组件或控制器属性/属性的值。
根据您的说明,您的属性loginActiveClass
的值为function
。这就是你的车把。由于您使用它的位置只允许字符串值,因此您获得值的toString()
表示,对于函数,函数的代码为字符串。
只需在.hbs中使用{{att}}
访问功能代码,就无法触发功能代码的实际评估。
在末尾添加.property()
会为您提供计算属性,它确实会评估函数并将评估结果返回给“调用者”。 (请注意,Ember中计算属性的首选语法前一段时间已更改为something more explicit。我建议使用eslint和eslint-plugin-ember让IDE或者ember的cli在适当时通知您最佳实践。)< / p>
此外,在您的具体示例中,函数的“逻辑”很容易集成到hbs中:
<div class="tab-pane fade show {{if (eq page 'login') 'active'}}" id="login" role="tabpanel">