编辑:问题出在我自己的本地设置以及我在应用程序中包含视图的方式。一旦我解决了这些问题,问题就解决了。这里的代码实际上是正确的。 Chrixian提供的答案也适用。访问{{#each}}迭代器中创建的子视图的属性
我坚持的东西,似乎相当简单。我想访问一些计算出来的属性,这些属性是在视图中的每个循环中构建的。
<div class='build-buttons-wrapper'>
<button class="list-builds-button" {{action "toggleBuildsList" target="view"}} ></button>
<button class="build-button" {{action "buildApp" on="click" target="view"}} >Build</button>
</div>
<div class='builds-list'>
<h2 class="build-title">Latest builds</h2>
<ul class="builds-list">
{{#each content}}
{{#view Jimux.BuildView buildBinding="this"}}
<span class="build-date">{{createdAt}}</span>
<a {{bindAttr href="srcArchive"}} class="download-button source">Source</a>
{{! *here are different ways I have tried to access "finished" property* }}
{{log build.view.finished}}
{{log view.finished}}
{{log finished}}
{{log this.finished}}
{{log build.finished}}
{{#if build.finished}}
<div class="build-progressbar"></div>
{{else}}
<div class="build-progressbar"><div class="build-percent" style="width:{{unbound percent}}%"></div></div>
{{/if}}
{{/view}}
{{/each}}
</ul>
</div>
这里是一个正在使用该模板的BuildsView
:
Jimux.BuildsView = Em.View.extend({
templateName: 'builds'
listVisible: false
classNames: ['builds-view']
buildApp: (view, event, ctx) ->
@get('controller').newBuild()
,
hideList: ->
@set 'listVisible', false
this.$(".builds-list").hide("slide", {direction: "up"}, 300)
,
showList: ->
@set 'listVisible', true
this.$(".builds-list").show("slide", {direction: "up"}, 300)
,
toggleBuildsList: (view, event, ctx) ->
if @get 'listVisible' then @hideList() else @showList()
,
didInsertElement: ->
@hideList() if not @get 'listVisible'
})
这里是它的{{#each}}
iterator中的模板创建上述BuildView
。
Jimux.BuildView = Ember.View.extend(
tagName: 'div',
classNames: ['build-item'],
#testBinding: true,
sample: true,
finished: (->
return true
#return (@get 'percent') == 100
).property('percent')
)
以上所有内容均按预期工作。例如,我可以使用{{percent}}访问每个子视图的百分比属性。但是,如果我定义我自己的Jimux.BuildView
内部性能如上图,我似乎无法找到一个方法来车把内访问它们{{#each}}
迭代器。你可以看到不同的方法我都试过车把代码里面有{{log}}
声明,所有在控制台打印undefined
。我在这里错过了什么?
什么版本/ emberjs你运行? – jonnii
@jonnii'Handlebars.VERSION =“1.0.rc.1”;'你认为有事情做这个问题? – Aras