是什么原因引起的?我检查了我的数据上下文,这实际上传入了相应的数据,这在以前版本的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() {
答案 0 :(得分:2)
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>
在我看来,它还使助手函数和助手调用更具可读性(和灵活性)。