假设我有 2 个 Controller 来处理页面的 2 个部分——页眉和页面内容。大多数操作发生在 pagecontent.js(页面内容的 Controller )中。它有一组函数来加载各种 View 。但是标题有后退按钮。我跟踪历史记录,当单击后退按钮时,我想调用 pagecontent.js 上的适当函数来加载特定 View 。这是我正在尝试做的示例:
页面内容.js
$.Controller('Controller.Pagecontent', {
...
".home click": function(){
this.loadHome();
},
loadHome: function(){
$('#pagecontent').html('//views/home', {});
}
...
})
header.js
$.Controller('Controller.Header', {
...
".back click": function(){
if( HISTORY[0] == 'home' )
// call loadHome() from pagecontent.js
}
...
})
我不想将所有这些函数都复制到 header.js,因为它会是多余的,而且某些函数具有复杂的逻辑。
有什么想法吗?
最佳答案
javascript 中定义的任何对象都可以从浏览器页面中的任何 javascript 代码访问。
如果您在同一页面中加载两个 .js
文件,尽管在不同部分中,一个中的对象在另一个中可能是可访问的,因此可以在 window
对象中定义这些文件。
文件1.js
var a = 13;
var b = 14;
文件2.js
alert("a="+a);
function show_b() {
alert("b="+b);
}
如果 file2.js 在 file1.js 之后加载,将显示带有 'a=13' 的警告。每当您在加载两个文件之前调用 show_b()
时,都会显示带有“b=14”的那个。
为避免干扰,您可以使用 windows.a
和 windows.b
而不是 a
和 b
。
同一示例适用于函数定义。
关于javascript - 如何访问不同 Controller 的功能? - JavaScript MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9071225/