1

我正在尝试显示和隐藏一些按钮,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;
  });

这种作品(按钮被替换为文本 if myObject.isConditionTrueis false,并在isCondionTrueis时出现true)但是当显示按钮时,它们在点击时没有任何功能。我猜是因为在调用 didInsertElement 时它们不在 DOM 中。那么,有没有办法解决这个问题?我应该进行子/父视图设置吗?任何指针表示赞赏。

4

1 回答 1

2

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

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

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

于 2013-01-28T02:34:37.897 回答