2013-10-11 41 views
0

我使用Ember 1.0,其中if帮手将空数组视为虚假。
我想用更多的本机JS一个来取代它,这样的:替换Ember的如果帮手

false0""nullundefined - 将返回false;
其余的全部,包括[],{},function() {},将会是真的。如何使用registerBoundHelper注册新帮手?

回答

1

if帮手中有一个隐藏功能。如果您在对象中提供了isTruthy属性,它将被使用。因此使用Array.prototype.isTruthy = true;将使所有数组都被评估为true,而不需要创建任何帮助程序。

看看这jsfiddle http://jsfiddle.net/marciojunior/yb6LR/看到这个工作。

+0

@shany如果我的答案解决了您的问题,您能接受答案吗? –

+0

不错! 虽然在代码中依赖于[] is!isTruthy的其他部分仍然有点问题。 以某种方式选择性地使用它,使用另一个帮助器而不是重写默认行为更安全。 – Shany

+0

现在不可能覆盖默认的'if'视图助手,而不是硬编码一些内部的烬函数。所以我认为你需要在全球范围内使用它。 –

0

Ember目前不支持自定义块助手,所以如果不编辑源代码,可能没有办法。根据您需要使用的位置,您始终可以创建自定义计算属性。

+0

我需要它跨所有的应用程序,所以我不会介意使用registerHelper而不是registerBoundHelper来解决问题。 是否有可能在该替代实现中以某种方式绑定属性? – Shany