2015-10-06 69 views
1

在IPython3我的“custom.js”被监听事件:IPython的3至Jupyter迁移,custom.js和事件

$([IPython.events]).on("app_initialized.NotebookApp", function() { ... }) 

在看看this post后,我在听为“notebook_loaded .Notebook'事件。

require(['base/js/namespace', 'base/js/events'], function(IPython, events) { 
    events.on('notebook_loaded.Notebook', function() { ... }); 
}); 

但是我用的是“应用程序初始化”事件做一些东西,包括隐藏标题,即:

$('#header').hide() 

而现在,这种情况下,它是隐藏的,但只有很短的显示器后, ... 我认为这是载入笔记本前一个事件,就像在IPython3笔记本

我没有找到有关这些事件的任何文档..

它ST生病在应用程序初始化时发生了什么事件?

感谢,

回答

2

出于某种原因,你不能在app_initialized.NotebookApp事件,当您使用要求(“基地/ JS /事件”)函数听。

如果你看笔记本static/notebook/js/main.js代码,app_initialized.NotebookApp事件仍然被解雇。

,但你必须用define()函数requireJS在此事件监听:

define([ 
    'base/js/namespace', 
    'base/js/events' 
], function(IPython, events) { 
    events.on('app_initialized.NotebookApp', function() { 
    // Your Code 
    }); 
}); 

这里你的回调将被执行。

如果你把你的custom.js

require(['base/js/namespace', 'base/js/events'], function(IPython, events) { 
    events.on('notebook_loaded.Notebook', function() { 
     console.log('require & notebook_loaded.Notebook'); 
    }); 
    events.on('app_initialized.NotebookApp', function() { 
     console.log('require & app_initialized.NotebookApp'); 
    }); 
}); 

define(['base/js/namespace', 'base/js/events'], function(IPython, events) { 
    events.on('notebook_loaded.Notebook', function() { 
     console.log('define & notebook_loaded.Notebook'); 
    }); 
    events.on('app_initialized.NotebookApp', function() { 
     console.log('define & app_initialized.NotebookApp'); 
    }); 
}); 

在控制台中的结果将是:

define() & app_initialized.NotebookApp 
define() & notebook_loaded.Notebook 
require() & notebook_loaded.Notebook 

我想这与require()您注册已经发生的事件..

require()正在等待所有依赖项和子模块被初始化......对于可能太晚了事件。