我正在关注一个模板,用于动态选择要使用渲染助手渲染的模型,路径,控制器,如outlined in this question(以及其他地方)。我的问题是我们希望在设置Ember.ENV.RAISE_ON_DEPRECATION
标志的情况下运行,以便在问题发展成升级噩梦之前捕获它们。我从一个把手助手那里打电话给Ember.Render,就像这样:
Ember.Handlebars.registerBoundHelper('renderModuleEdit', function(callingContext, module, options) {
var modelName = callingContext.get('type').get('modelName');
return Ember.Handlebars.helpers.render.call(callingContext, "edit_" + modelName, modelName, options);
});
模板中包含以下代码:
{{#each module in modules}}
<div class="tab-content" {{bind-attr class="module.active:active"}}>
{{renderModuleEdit module module}}
</div>
{{/each}}
问题是渲染在“无报价参数”的测试中失败,即使我在其上使用call()
,而不是直接把手模板语法。测试在this line的源中定义。实际测试是options.types[0] !== 'ID'
,虽然options参数在寄存器辅助函数(上面的第一个代码块)中可用,因此我可以将1 st 类型从'ID'
,我不确定我能将它改为到,这不会导致其他东西在以后巧妙地破坏。错误消息来自:
未捕获错误:不推荐使用带{{render}}的无引号参数。请更新为引用的“{{render”edit_Intro“}}。
由于我没有使用{{render edit_Intro}}
拨打此电话,因此我不知道如何纠正此问题。如果我将模板代码更改为{{renderModuleEdit 'module' 'module'}}
,那么我的renderModuleEdit的参数将作为'module'
的字符串而不是我需要的模型实例。
我觉得我不知道这个测试实际上是什么,以及'无引号'和'引用'参数甚至意味着什么。有人可以解释一下吗?有没有办法围绕这个弃用警告从这样的注册绑定把手助手调用渲染?
答案 0 :(得分:1)
一个肮脏的解决方案,但现在正在工作:
Ember.Handlebars.registerBoundHelper('renderModuleEdit', function(callingContext, module, options) {
options.types[0] = "STRING"; // FIXME: hack
var modelName = callingContext.get('type').get('modelName');
return Ember.Handlebars.helpers.render.call(callingContext, "edit_" + modelName, modelName, options);
});
我也无法找到合适的修补程序: - /