Ember.js使用按钮隐藏分隔符,但保留didInsertElement功能

时间:2013-01-28 00:14:43

标签: javascript ember.js

我正试图在Ember.js中显示和隐藏一些按钮,如下所示。

{{#view App.myView contentBinding="App.myObject"}

<div id="my_widget" class="well span3">                                                                                 
{{#if content.isConditionTrue}}                                         
  <button id="stop_button" class="btn btn-primary"> Stop </button>                                              
  <button id="start_button" class="btn btn-primary" > Start </button>
  <button id="record_button" class="btn btn-primary">Record </button>
</div>                                            
{{else}}                                            
  <div id="widget_warning_box" class="well">                                                  
    <p> No cameras are open, open a camera in Add/Remove Cameras tab. </p>                                          
  </div>
{{/if}}                                         
</div>
{{/view}}

,视图如下:

App.myView = Ember.View.Extend({
   didInsertElement: function() {
      $record = $("#record_button")
      $start = $("#start_button")
      $stop = $("#stop_button")

      $record.click(function(){
           console.log("record clicked")
           });

      $start.click(function(){
           console.log("start clicked")
           });
   });

myObject控制器是

  App.myObject = Ember.Object.create({
      isConditionTrue : false;
  });

此类工作(如果myObject.isConditionTruefalse,则按钮会被文字替换,isCondionTruetrue时会显示)但显示按钮时,他们没有点击功能。我猜它是因为在调用didInsertElement时它们不在DOM中。那么,有什么方法可以解决这个问题吗?我应该进行子/父视图设置吗?任何指针赞赏。

1 个答案:

答案 0 :(得分:2)

嗯,我绝对不是能说出正确方法的人,因为我也只是在学习烬,但这是我在小提琴上的工作方法

http://jsfiddle.net/drulia/zkPQt/

基本上每次将myObject.isConditionTrue切换到false时,ember都会从DOM中删除按钮,这就是jQuery选择器停止工作的原因。我附加了ember js {{action}}帮助器并放置了响应myObject中事件的函数,现在按钮正在工作并在屏幕上显示操作结果。