2014-11-14 31 views
1

我有一个组件包装由另一个模板定义的内容。我想在模板上执行一个操作来触发我周围组件中的方法。这可能吗?指定目标行为到一个余烬组件

这是我的模板。请注意,为了简洁起见,这会缩短。

{{#drop-down}} 
    <div class="menu-selector clickable" {{action "toggleDropdown"}}> 
    </div> 
{{/drop-down}} 

这是我的组件:

DropDownComponent = Ember.Component.extend 

    showDropdown: false 

    actions: 
     toggleDropdown: -> 
      @toggleProperty 'showDropdown' 

`export default DropDownComponent` 

我可以确认我的其他组件一切工作。如果我将该操作放入装载此模板的组件中,它可以正常工作。但那不是我想要的地方。

回答

0

所以你想发送一个动作到特定的组件。请注意,

组件是一种自定义HTML标记,其行为使用JavaScript实现,其外观使用Handlebars模板描述。它们允许您创建可以简化应用程序模板的可重复使用的控件

一种Ember.Component一种观点认为是完全隔离的。

您可能在此处使用了错误的工具。您应该使用自定义视图。

App.DropdownView = Ember.View.extend 
    showDropdown: false 
    elemendId: 'dropdown' 

    actions: 
     toggleDropdown: -> 
      @toggleProperty 'showDropdown' 
      return; 

{{#view 'dropdown'}} 
<div> 
    <div class="menu-selector clickable" {{action "toggleDropdown"}}> 
</div> 
{{/view}} 

然后你就可以发送一个动作由

Ember.View.views.dropdown.send('toggleDropdown'); 

演示查看:http://jsbin.com/zoqiluluco/1/