我正在使用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();
没有成功。
感谢您的帮助!!
答案 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