javascript - Meteor 0.8.0,UI 预期有效属性名称

标签 javascript coffeescript meteor meteor-blaze

这是什么原因造成的?我检查了我的数据上下文,实际上传入了适当的数据,这在以前版本的 Meteor 中有效。

Meteor UI 中出现异常:错误:需要有效的属性名称、“”、null 或对象

HTML:

    <select class='form-control' id='region' name="region" value="{{region}}">
      {{#each regions}}
        <option class="controls" value='{{_id}}' {{curRegion ../regionId}}>{{title}}</option>
      {{/each}}
    </select>

辅助函数:

Template.labEdit.helpers
  curRegion:  (region) ->
    console.log "Region: ", region, this
    return region is this._id && 'selected'

完整堆栈跟踪:

Exception in Meteor UI: Error: Expected valid attribute name, '', null, or object
    at Object.Spacebars.attrMustache (http://localhost:3000/packages/spacebars.js?5d478ab1c940b6f5a88f78b8adc81a47f022da77:137:11)
    at HTML.OPTION.$dynamic (http://localhost:3000/client/views/labs/template.labEdit.js?b7b4fc16112efc0d900b152a545a4279764a2728:61:26)
    at Object.HTML.evaluateAttributes (http://localhost:3000/packages/htmljs.js?697b0dd0fbdd1f8984dffa3225121a9b7d0b8609:347:21)
    at http://localhost:3000/packages/ui.js?b523ef986d3d39671bcb40319d0df8982acacfe8:2351:28
    at callWithNoYieldsAllowed (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:74:5)
    at _.extend._compute (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:212:7)
    at new Deps.Computation (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:144:10)
    at Object._.extend.autorun (http://localhost:3000/packages/deps.js?7afb832ce6e6c89421fa70dc066201f16f9b9105:361:13)
    at materialize (http://localhost:3000/packages/ui.js?b523ef986d3d39671bcb40319d0df8982acacfe8:2346:30)
    at materialize (http://localhost:3000/packages/ui.js?b523ef986d3d39671bcb40319d0df8982acacfe8:2293:7) 

这是编译后的 blaze 实际引发错误的部分:

UI.block(function() {
    var self = this;
    return [ "\n                ", HTML.OPTION({
      "class": "controls",
      $dynamic: [ function() {
        return Spacebars.attrMustache(self.lookup("state"), Spacebars.dot(self.lookup(".."), "status"));
      } ]
    }, function() {
      return Spacebars.mustache(self.lookup("."));
    }), "\n              " ];
  })), "\n            "), "\n          "), "\n          ", HTML.DIV({
    "class": "col-md-4"
  }, "\n            ", Spacebars.With(function() {

最佳答案

The way to use valueless attributes like selected has changed in Blaze.

因此,您可以将 curRegion 帮助器替换为 isRegion 帮助器:

Template.labEdit.helpers
  isRegion: (region) -> @_id is region

并将 HTML 行更改为:

<option class="controls" value='{{_id}}' selected={{isRegion ../regionId}}>{{title}}</option>

在我看来,它还使辅助函数和辅助调用更具可读性(且灵活)。

关于javascript - Meteor 0.8.0,UI 预期有效属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22970379/

相关文章:

javascript - 在 Javascript 中检测已提交的表单

javascript - 将文件拖到 Firefox 时 dropEffect 不起作用

javascript - 在强制布局中添加下拉菜单 (d3.js)

javascript - 用于检查未定义值的优雅 Javascript 代码

javascript - 如何在 CoffeeScript 中新定义的函数上调用函数

vim - 如何为 CoffeeScript 生成 ctags?

javascript - Meteor 文档中的消息计数示例如何工作?

javascript - react : Insert One Component After Another

meteor - 使用 MeteorJS 和 Iron Router 时公开/提供 "index.html"文件?

javascript - 使用 Node 和 Meteor 将 PDF 转换为图像 - 如何将缓冲区作为输入文件传递?