在Github上,展示了许多Handlebars助手。你可以找到它们here。
我想使用它们,但没有想法,如何包含它们。该代码看起来像javascript(文件以.js ...结尾),但是像' import',' export',''默认&# 39;我很困惑。
据我所知(猜测),我必须先包含 if-condition.js 。稍后,其他(包含)文件引用此文件。
但是当我这样做时,控制台会抛出错误:
未捕获的SyntaxError:意外的保留字。
有谁有想法,如何让这些代码有效?
答案 0 :(得分:0)
import
和export
是下一版Javascript即将发布的module syntax的关键字。您今天可以使用transpiler将其转换为普通的ES5语法来使用它们。
然而,如果你只使用一些助手,那么很容易手工“传递”它们。而不是导出函数,只需将其传递给Ember.Hanldebars.registerBoundHelper
调用。这是if-condition
助手:
Ember.Handlebars.registerBoundHelper('if-condition', function() {
var args = [].slice.call(arguments);
var options = args.pop();
var context = (options.contexts && options.contexts[0]) || this;
if (!options.conditional) {
throw new Error("A conditional callback must be specified when using the if-condition helper");
}
// Gather all bound property names to pass in order to observe them
var properties = options.types.reduce(function(results, type, index) {
if (type === 'ID') {
results.push(args[index]);
}
return results;
}, []);
// Resolve actual values for all params to pass to the conditional callback
var normalizer = function() {
return Ember.Handlebars.resolveParams(context, args, options);
};
// This effectively makes the helper a bound helper
// NOTE: 'content' path is used so that multiple properties can be bound to using the `childProperties` argument,
// however this means that it can only be used with a controller that proxies values to the 'content' property
return Ember.Handlebars.bind.call(context, 'content', options, true, options.conditional, normalizer, properties);
});