使用Meteor模板和Blaze时复选框出现问题

3

我有一些在Blaze之前可以正常工作的代码,但在Blaze和复选框处理更改后却不能按预期工作。

这段代码非常简单。

  <div class="modal-footer">
    <label for="packed" class="checkbox-inline input-lg">Packed</label>
      <input type="checkbox" name="packed" id="packed" checked={{isPacked evt}}/>
    {{#if isPacked evt}}
      Packed
    {{else}}
      Not Packed
    {{/if}}
    <label for="delivered" class="checkbox-inline input-lg">Delivered</label>
      <input type="checkbox" name="delivered" id="delivered" disabled={{disDelivered evt}}  checked={{isDelivered evt}}/>
    <button type="button" class="btn btn-default" id="closeEdit">Close</button>
  </div>

“未打包”这行字像预期的一样显示出来了,但是复选框都被选中了(尽管两个测试都返回 false),而且交付按钮像预期的那样被禁用了。

我真的无法理解为什么尽管测试返回 false,但是复选框现在却被选中了。

1个回答

4
Blaze会自动将返回的对象转换为属性,因此当复选框应该被选中时,您可以从isPacked返回{checked:"checked"},或者在不应该选中时隐式返回。

我刚试着返回{checked:"checked"},但直到我也改变了HTML为止它才起作用: <input type="checkbox" name="packed" id="packed" {{isPacked evt}}/> 这很好地解决了问题。谢谢@Kelly。 - DenisH
我不确定你是如何在最近的Meteor版本中使其工作的,因为它会导致错误。请查看以下链接获取更多详细信息:https://github.com/meteor/meteor/wiki/Using-Blaze#conditional-attributes-with-no-value-eg-checked-selected - occasl
这在0.9.4中仍然完美运行,可以在此meteorpad中看到:http://meteorpad.com/pad/zyTWugodWr8vBbSnu - Kelly Copley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接