gpt4 book ai didi

javascript - 构建一个有条件的 Ember 助手

转载 作者:行者123 更新时间:2023-12-03 03:25:08 26 4
gpt4 key购买 nike

我正在尝试为我的 Ember 应用程序构建一个新的条件助手。值得一提的是,我正在使用使用 Handlebars 2.0 的 Ember 1.10.1,并且我无法升级它,如果能很好地解决这个版本的 Ember 的问题。在写这篇文章之前,我尝试了不同的解决方案并调试了很多 Ember 代码,我已经接近解决方案,但可能我遗漏了一些东西。

首先,我尝试使用以下方法阅读 Handlebar 文档:

Ember.Handlebars.registerHelper('helperName', function(conditional, options) {
if(conditional) {
return options.fn(this);
} else {
return options.inverse(this);
}
});

这里是模板:

{{#helperName booleanCondition}}
print true
{{else}}
print false
{{/helperName}}

调用 fn 函数一切正常,但 inversion 函数(用于渲染 else 分支的模板)实际上是一个对象而不是函数。

然后我开始调试 Ember 代码,并尝试遵循 Ember 使用 if 帮助程序的相同方法,因此我最终得到以下结果:

Ember.Handlebars.registerHelper('helperName', function(condition, options) {

var permission = Ember.Object.extend({
can: Ember.computed(function() {
return condition;
})
}).create();

Ember.Handlebars.helpers.boundIf.helperFunction.call(this, ["can"], permission, options, options.data.buffer);
});

can 是绑定(bind)到 if 的属性,用于在属性更改时更改模板,因为我们使用的是 if< 的 boundIf 版本 (这就是我刚才所说的)。

这个解决方案的问题是,恕我直言,它可能是最接近正确的,因为属性计算不正确,并且帮助器总是打印错误值。我确实进行了很多调试但没有使其正常工作,因此我们将非常感谢任何帮助,我希望这对其他人也有用。

最佳答案

如果您想要构建支持授权问题的条件方法,您应该看看ember-can。它是一个 Ember-CLI 插件(虽然看起来你正在做全局变量),但旧版本可以使用 Ember 1.10。您应该能够引用他们在那里所做的事情并将其纳入您的设置中

关于javascript - 构建一个有条件的 Ember 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46362886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com