Ember.js 访问在{{each}}迭代器中创建的子视图的属性
编辑:问题在于我自己的本地设置和在应用程序中包含视图的方式。一旦我解决了这些问题,问题就解决了。这里的代码实际上是正确的。克里希安提供的答案也很有用 我被一件似乎很简单的事情缠住了。我想访问在把手中的每个循环中构造的视图的一些计算属性Ember.js 访问在{{each}}迭代器中创建的子视图的属性,ember.js,Ember.js,编辑:问题在于我自己的本地设置和在应用程序中包含视图的方式。一旦我解决了这些问题,问题就解决了。这里的代码实际上是正确的。克里希安提供的答案也很有用 我被一件似乎很简单的事情缠住了。我想访问在把手中的每个循环中构造的视图的一些计算属性 <div class='build-buttons-wrapper'> <button class="list-builds-button" {{action "toggleBuildsList" target="view"}} >&l
<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>
这是在上面模板中的{{each}}迭代器内创建的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}访问每个子视图的percent属性。但是,如果我在Jimux.BuildView中定义自己的属性(如上所示),我似乎找不到在handlebar{{{each}}迭代器中访问它们的方法。您可以看到我在handlebar代码中使用{{log}}语句尝试过的不同方式,所有这些打印都未在控制台中定义。我在这里遗漏了什么?我假设您所引用的百分比属性是您正在循环的每个内容对象的属性-如果是这样的话,请如下所示:
finished: (->
return @get('context.percent') is 100
).property('context.percent')
您应该能够简单地在{{view Jimux.BuildView}中使用{{finished}}。。{{/view}}block我假设您引用的percent属性是您循环的每个内容对象的属性-如果是这种情况,请将finished如下所示:
finished: (->
return @get('context.percent') is 100
).property('context.percent')
您应该能够简单地在{{view Jimux.BuildView}中使用{{finished}}。。{{/view}}block您正在运行哪个版本的handlebar/emberjs?@jonnii handlebar.version=1.0.rc.1;你认为这与这个问题有关吗?你正在运行哪个版本的handlebar/emberjs?@jonnii handlebar.version=1.0.rc.1;你认为这与这个问题有关吗?+1感谢阅读我的长篇帖子,谢谢你的回复!我应该把这个完成的计算属性放在哪里?在BlocksView中,哪个有模板,或者在模板中实例化的BlockView,或者其他地方?好吧,很难承认,但我犯了一个愚蠢的错误。我的原始代码是正确的。您的代码也按预期工作。感谢您花时间回答,并为虚惊一场表示歉意+感谢您阅读我的长篇帖子,感谢您的回复!我应该把这个完成的计算属性放在哪里?在BlocksView中,哪个有模板,或者在模板中实例化的BlockView,或者其他地方?好吧,很难承认,但我犯了一个愚蠢的错误。我的原始代码是正确的。您的代码也按预期工作。感谢您花时间回答,并为虚惊一场表示歉意!