为什么这些Ember.js视图事件没有被触发?

时间:2014-04-15 21:35:11

标签: javascript ember.js

我的观点变得可见时我尝试做某事,但becameVisible事件回调未被调用。

以下是我的观点:

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

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

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

当我点击视图中的任何元素时,click事件会被触发,但becameVisiblewillClearRender并未被触发。

我有什么不理解的吗?

2 个答案:

答案 0 :(得分:2)

当Ember将视图dom放入页面时,

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.当改变支持视图的模型时,ember将更新当前视图中的绑定,因此Ember不必重新插入视图,didInsertElement将不会触发。 2.如果您在didInsertElement上设置事件处理程序(如引导菜单事件),则需要在willDestroyElement事件中关闭该绑定。

答案 1 :(得分:1)

在重新呈现视图之前调用

willClearRender。当视图的isVisible属性更改为true时,将调用becameVisible。你看看jsbin