我一直在尝试比较车把 if 语句中的一些值{{#if value == 'otherValue'}}
,显然没有成功,因为车把不喜欢这样,并且需要一个字符串、布尔值或函数名。好吧,那没关系,但后来我尝试在函数中传递参数,就像你可以用{{action}}
助手做的那样,而且那也没有锻炼,在控制台中得到了这个
Error: assertion failed: You must pass exactly one argument to the if helper
所以然后我决定在视图中执行此操作,即使 ember js 指出访问范围内的模板值是不寻常的,它们只提供了没有示例的糟糕段落。 http://emberjs.com/guides/understanding-ember/the-view-layer/#toc_accessing-template-variables-from-views
所以当我尝试这样做时,我遇到了访问这些变量的问题,我尝试了这种方式this.get('controller.templateVariables')
并通过查看的完整路径,但值要么未定义,要么.get()
不作为方法存在。
所以此时我决定将变量保存在 DOM 数据属性中,但事实证明,{{#view App.TabsView data-title="{{tab}}"}}
当{{tab}}
我尝试使用this.get('data-title')
.
留给我的唯一方法是在视图中插入其他元素并在那里存储变量,然后使用 jQuery 类选择器访问它。但是在执行函数时,DOM 中尚不存在元素isVisible
,因此当时我无法访问值。这就解释了为什么this.get('element')
要回归null
。
ember js 上的类似示例大多以类似的结尾 if (someLogic) {}
,但是当我没有可用的变量时如何执行任何逻辑。
问题
为了简化我的问题 - 有没有办法在 ember js 中做这样的事情?简单如
// have objects stored in controller
var obj = [{title:'Tab1'}, {title:'Tab2'}, {title:'Tab3'}];
// loop via them in the DOM
obj.forEach(function(tab) {
// do this kind of comparison
if( tab.title == currentTab() ) {
// do something here
}
});
如果那不可能,那么实现类似功能的另一种方法是什么?