javascript - 如何访问不同 Controller 的功能? - JavaScript MVC

标签 javascript jquery model-view-controller jquery-events javascriptmvc

假设我有 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.awindows.b 而不是 ab

同一示例适用于函数定义。

关于javascript - 如何访问不同 Controller 的功能? - JavaScript MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9071225/

相关文章:

jquery - 如何找出父节点的所有嵌套子节点?

php - 我对 Web 开发中的 MVC 理解正确吗?

php - 如何将子域合并到 MVC 框架中

android - Android 上的默认模式 MVC

javascript - jQuery 方法找不到选择器

javascript - 如何从对象输出中删除函数?

javascript - 使用背景覆盖 react 添加/删除和切换侧边栏类

javascript - 当使用 React 包裹在 div 中时,SVG 矩形会转到新位置

javascript - 如何获取整个 html 内容并存储在变量中以便在我的站点中重用

javascript - 动态元素上的 Jquery 事件注册