你如何从jQuery控制器调用函数?

时间:2011-07-30 19:13:35

标签: javascript jquery controller javascriptmvc

我正在使用JavascriptMVC并拥有

形式的控制器
$.Controller.extend('AppName.Controllers.ControllerName',
{
  onDocument: true
}
{
  initControllerName: function() {
    ...
  },
  testFucntion1() {
    alert('yeah!!');
  }
});

我希望能够从我的视图生成的页面调用函数testFunction1()。

我发现this question似乎在问同样的事情,但我无法用那里提供的答案来解决这个问题。

我试过

$('#controllername').testFunction1();
$('#ppame_controllername').testFunction1();
$('#ppame_controllers.controllername').testFunction1();

没有成功。

感谢您的帮助!!

2 个答案:

答案 0 :(得分:1)

Martin Owen的答案是准确的,除了我发现app_name_controller_name一开始很混乱。

一个真实的例子是:

如果您的控制器定义为

$.Controller.extend('Layout.Controllers.Page', 
  ...

然后使用

$(document).layout_page("testFunction1");

布局= app_name

Page = controller_name

答案 1 :(得分:0)

您可以使用以下方式调用您的函数:

$(document).app_name_controller_name("testFunction1");

如果要将参数传递给函数,请在函数名称后面指定它们:

$(document).app_name_controller_name("testFunction1", "Hello World");

控制器定义的静态部分中的onDocument: true表示它自动附加到文档元素,因此您可以获得它的实例。如果您想将其绑定到其他内容,请删除onDocument: true并使用类似的内容:

$('#main').app_name_controller_name();

这将创建一个控制器实例并将其附加到$('#main')元素。然后通过this.element在控制器的方法中提供该元素。

我不知道你的情况,但你不应该经常需要调用控制器方法 - 控制器应该绑定到由DOM元素触发并由模型发布的事件。 JMVC可以很容易地将控制器方法绑定到事件:Listening To Events