1

有人使用#with 遇到这个问题吗?

// 调用模板中的代码,这里的Helper只是用来传参数一个子模板

{{#with inputControlCheckboxHelper "middleName" "Middle Name" "" "middleNameDNA" "Address" "Alexander"}}
{{> inputControlCheckbox}}
{{/with}}

// 只用这个助手传入参数

Template.registerHelper("inputControlCheckboxHelper",
function (inputName, inputTitle, inputSubTitle, checkboxName, templateName, inputPlaceHolder) {
    return {
        fieldName: inputName,
        title: inputTitle,
        subTitle: inputSubTitle,
        checkbox: checkboxName,
        template: templateName,
        placeHolder: inputPlaceHolder
    };
});

// 子模板,这会调用另一个助手

<template name="inputControlCheckbox">
{{#with shouldBeDisabled template checkbox}}
  {{> afFieldInput name=../fieldName}}  
{{/with}}

{{> afFieldInput name=checkbox type="boolean-checkbox"}}
</template>

// 检查上面的输入是否应该被禁用的模板。

Template.registerHelper("shouldBeDisabled", function (formName, checkBoxName) {
    var checkBox = AutoForm.getFieldValue(formName, checkBoxName);

    if (checkBox === true) {
        return {disableMe: true, notApplicable: "N/A"};
    }
    else if (checkBox === false) {
        return {disableMe: false, notApplicable: ""};
    }
    else if (checkBox === "") {
        return {disableMe: false, notApplicable: ""};
    }
});

在 Chrome 控制台中,堆栈跟踪如下所示: 在此处输入图像描述

如果我删除 {{#with shouldBeDisabled 模板复选框}} 行,我没有例外。此外,即使有例外,所有内容都会呈现 find 并且复选框与输入一起使用。

我正在使用 Iron Router 1.0.1、Meteor 1.0 和 Autoform 4.0.1

4

1 回答 1

1

更新到 Autoform 4.0.2 解决了这个问题。

于 2014-11-10T23:12:16.373 回答