Ember.js 在ember中以兄弟元素为目标的正确方法是什么?
我目前的方法是有效的,但它依赖于jQuery,而不是直接针对元素。这感觉不太理想。在余烬有没有标准的方法Ember.js 在ember中以兄弟元素为目标的正确方法是什么?,ember.js,Ember.js,我目前的方法是有效的,但它依赖于jQuery,而不是直接针对元素。这感觉不太理想。在余烬有没有标准的方法 App.facetGroup = Em.View.extend({ templateName: "facet-group", actions: { showList: function(e) { var id = '#' + this.get('elementId'); $(id).children('.facets-list').slideToggl
App.facetGroup = Em.View.extend({
templateName: "facet-group",
actions: {
showList: function(e) {
var id = '#' + this.get('elementId');
$(id).children('.facets-list').slideToggle(100)
}
}
});
facet组
模板:
<h3 {{action showList target="view"}} class="facet-group-heading">{{view.displayName}}</h3>
// Facet lists are hidden by default
<ul class="facets-list">
{{#each view.facets }}
{{view this}}
{{/each}}
</ul>
{{view.displayName}
//默认情况下,面列表是隐藏的
{{{#each view.facets}
{{查看此}
{{/每个}}
创建一个包含两个子视图[h3..]和[ul..]的ContainerView不是更好吗?您还可以使用this.$()而不是this.get('elementId')以视图的jquery元素为目标
编辑:
像这样的方法应该会奏效:
App.FacetGroupView = Ember.ContainerView.create({
childViews: ['header', 'list'],
header: Ember.View.create(
tagName: 'h3',
// templateName: 'facet-group/header' or
template: Ember.Handlebars.compile('
{{view.displayName}}
'),
classNames: ['facet-group-heading'],
click: function() {
// Access the list view element
this.list.$().slideToggle(100);
}
)
list: Ember.View.create(
tagName: 'ul',
classNames: ['facets-list'],
// templateName: 'facet-group/list' or
template: Ember.Handlebars.compile('
{{#each view.facets}}
{{view this}}
{{/each}}
'),
didInsertElement: function() {
// Hide facet list by default
this.$().hide();
}
)
});
您还可以像这样针对兄弟姐妹
actions: {
showList: function() {
this.$('.facets-list').slideToggle(100)
}
}
演示