2014-04-15 35 views
2

我试图做一些事情,当我的视图变得可见时,但becameVisible事件回调没有被调用。为什么这些Ember.js视图事件不被触发?

这是我的观点:

App.LessonView = Ember.View.extend({ 
    click: function() { 
     console.log("click"); 
    }, 

    becameVisible: function() { 
     console.log("becameVisible"); 
    }, 

    willClearRender: function() { 
     console.log("willClearRender"); 
    } 
}); 

当我在视图中单击任何元素时,click事件被解雇,但becameVisiblewillClearRender不是从来没有这样激动。

有什么我不理解?

+0

你的烬宝版是什么? – quaertym

+0

@quaertym 1.5.0 – SimpleJ

+1

您想使用didInsertElement http://emberjs.com/api/classes/Ember.LinkView.html#event_didInsertElement – kiwiupover

回答

2

当Ember将视图放入页面时会触发didInsertElement。 当ember从页面中删除dom时,willDestroyElement将会触发。

App.LessonView = Ember.View.extend({ 
    click: function() { 
     console.log("click"); 
    }, 

    didInsertElement: function() { 
     console.log("didInsertElement"); 
    }, 

    willDestroyElement: function() { 
     console.log("willDestroyElement"); 
    } 
}); 

有几件事情你应该知道使用didInsertElement 1时,当该背视图模型更改烬将更新当前视图中的绑定所以灰烬不必重新插入视图didInsertElement不会着火。 2.如果您在引导菜单事件didInsertElement上设置事件处理程序,则需要在willDestroyElement事件中关闭该绑定。

1

willClearRender在视图重新呈现之前调用。当视图的isVisible属性更改为true时调用becameVisible。你看看这jsbin

相关问题