Javascript 使用余烬组件';模板内的s方法
我刚刚开始学习Ember,有一件事我很困惑,如果我能在模板中访问组件的方法 例如,我有一个Javascript 使用余烬组件';模板内的s方法,javascript,ember.js,Javascript,Ember.js,我刚刚开始学习Ember,有一件事我很困惑,如果我能在模板中访问组件的方法 例如,我有一个注释列表组件,它呈现注释行的列表,如下所示: <ul class="list"> {{#each notes as |note|}} {{note-line note=note index=@index selected=(isSelected note)}} {{/each}} </ul> 但是我得到错误断言失败:找不到名为“isSelected”的帮助程序 我想
注释列表
组件,它呈现注释行的列表
,如下所示:
<ul class="list">
{{#each notes as |note|}}
{{note-line note=note index=@index selected=(isSelected note)}}
{{/each}}
</ul>
但是我得到错误断言失败:找不到名为“isSelected”的帮助程序
我想我可以用helpers解决这个问题,但是为特定组件的行为创建一个单独的helper似乎不是一个好的解决方案
请帮我建议一些更好的处理方法
非常感谢。在您的情况下,您的组件可以自行决定是否选中它。实际上,您有一个函数isSelected
,它返回一个布尔值,无论注释行是否被选中
您必须考虑使用计算属性来实现这一点。
注释行
组件的定义如下:
Ember.Component.extend({
tagName: '',
note: null,
isSelected: Ember.computed('note', function() {
return this.get('note.id') === this.get('selectedNote.id')
})
})
然后,在组件模板中,isSelected
作为简单组件变量提供,并在更新note
时更新
最后,您可以这样简单地使用组件:
<ul class="list">
{{#each notes as |note|}}
{{note-line note=note index=@index}}
{{/each}}
</ul>
model: function() {
return this.store.find('notes')
.then(function(notes) {
notes.forEach(function(note) {
note.set('isSelected') = true || false; // here will be implemented your function to determine if note is selected or not
});
return notes;
})
})
}
然后,在组件模板中,isSelected
与任何其他属性一样,在note
中可用。在您的情况下,您的组件可以自行确定是否选中它。实际上,您有一个函数isSelected
,它返回一个布尔值,无论注释行是否被选中
您必须考虑使用计算属性来实现这一点。
注释行
组件的定义如下:
Ember.Component.extend({
tagName: '',
note: null,
isSelected: Ember.computed('note', function() {
return this.get('note.id') === this.get('selectedNote.id')
})
})
然后,在组件模板中,isSelected
作为简单组件变量提供,并在更新note
时更新
最后,您可以这样简单地使用组件:
<ul class="list">
{{#each notes as |note|}}
{{note-line note=note index=@index}}
{{/each}}
</ul>
model: function() {
return this.store.find('notes')
.then(function(notes) {
notes.forEach(function(note) {
note.set('isSelected') = true || false; // here will be implemented your function to determine if note is selected or not
});
return notes;
})
})
}
然后在您的组件模板中,isSelected
与其他属性一样在note
中可用。谢谢您的回答,但在这种情况下,我似乎需要将所选注释传递到注释行
,即{note line note=note index=@index selectedNote=selectedNote}
我想知道是否还有其他方法可以在不传递所选便笺的情况下完成此操作,因为便笺行实际上只关心它显示的便笺以及是否选择了此便笺。我更了解您想要什么。请查看我的更新答案。感谢您的回答,但在这种情况下,我似乎需要将所选便笺传递到便笺行
,即{{note line note=note index=@index selectedNote=selectedNote}}
我想知道是否有其他方法不传递所选便笺,因为注释行
实际上只关心它显示的注释以及是否选择了此注释。我更了解您想要什么。请看我的更新答案。你能添加与notes相关的路由器部分吗?有一种方法可以通过指向
帮助程序的链接和自定义的activeClass
,让ember处理它,而不是在模型上循环并在每个记录上设置属性。您可以添加与notes相关的路由器部分吗?有一种方法可以通过指向
帮助程序的链接和自定义的activeClass
来实现,这样您就可以让ember处理它,而不是在模型上循环并在每个记录上设置属性。