0

我正在使用 JavascriptMVC 并有一个表单控制器

$.Controller.extend('AppName.Controllers.ControllerName',
{
  onDocument: true
}
{
  initControllerName: function() {
    ...
  },
  testFucntion1() {
    alert('yeah!!');
  }
});

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

我发现这个问题似乎在问同样的事情,但我无法通过那里提供的答案弄清楚。

我试过了

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

没有成功。

谢谢你的帮助!!

4

2 回答 2

1

Martin Owen's answer is accurate except I found app_name_controller_name confusing at first.

A real example would be:

if your controller is defined like

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

then use

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

Layout = app_name

Page = controller_name

于 2013-10-15T21:51:12.123 回答
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 使得将控制器方法绑定到事件变得非常容易:监听事件

于 2011-07-31T13:28:58.693 回答