我使用Ember 1.0,其中if
帮手将空数组视为虚假。
我想用更多的本机JS一个来取代它,这样的:替换Ember的如果帮手
false
,0
,""
,null
,undefined
- 将返回false
;
其余的全部,包括[]
,{}
,function() {}
,将会是真的。如何使用registerBoundHelper
注册新帮手?
我使用Ember 1.0,其中if
帮手将空数组视为虚假。
我想用更多的本机JS一个来取代它,这样的:替换Ember的如果帮手
false
,0
,""
,null
,undefined
- 将返回false
;
其余的全部,包括[]
,{}
,function() {}
,将会是真的。如何使用registerBoundHelper
注册新帮手?
if
帮手中有一个隐藏功能。如果您在对象中提供了isTruthy
属性,它将被使用。因此使用Array.prototype.isTruthy = true;
将使所有数组都被评估为true,而不需要创建任何帮助程序。
看看这jsfiddle http://jsfiddle.net/marciojunior/yb6LR/看到这个工作。
Ember目前不支持自定义块助手,所以如果不编辑源代码,可能没有办法。根据您需要使用的位置,您始终可以创建自定义计算属性。
我需要它跨所有的应用程序,所以我不会介意使用registerHelper而不是registerBoundHelper来解决问题。 是否有可能在该替代实现中以某种方式绑定属性? – Shany
@shany如果我的答案解决了您的问题,您能接受答案吗? –
不错! 虽然在代码中依赖于[] is!isTruthy的其他部分仍然有点问题。 以某种方式选择性地使用它,使用另一个帮助器而不是重写默认行为更安全。 – Shany
现在不可能覆盖默认的'if'视图助手,而不是硬编码一些内部的烬函数。所以我认为你需要在全球范围内使用它。 –