通过ajax加载页面后初始化atk4 js

时间:2012-05-31 15:33:37

标签: javascript atk4

我正在尝试在几个月前开始的项目中使用atk4。这个项目是一个应用程序,通过ajax在div中有一个菜单和加载页面。菜单是固定的,永远不会重新加载。 我想使用atk4生成新页面并进行数据库工作,暂时保留原样。 页面生成并加载正常,但是不会增加通过ajax加载的组件,因为不会触发文档就绪事件。 每次在相应的div中加载一个ajax页面时,我们都会触发一个事件。我们可以从这个事件中调用一个函数或函数来初始化atk4 js系统并增加新的组件吗?

我们的职能:

$(document).bind('afterajaxload', function(){
    //here we need to call atk4 js initialization to enhace the ajax loaded page.
})

谢谢(抱歉我的英语不好)!!

2 个答案:

答案 0 :(得分:1)

如果您正在将JavaScript函数直接编写到模板中,则不应使用标准的jQuery构造$(function(){..})。此功能每页仅触发一次。

Agile Toolkit通过引入替代函数$ .atk4(function(){...})实现了正确的功能,该函数在加载AJAX代码后正确触发。任何碰巧通过AJAX加载的东西都会被自动触发,所以你甚至不需要包装它。

为了让开发人员感到舒适,如果您使用JavaScript编写代码,那将非常简单:

$object->js(true, 'your js here');

这是重要的注意事项。必须直接或间接重新加载“$ object”,否则不会自动重新执行JS代码。您始终可以通过浏览器中的检查器/控制台查看脚本序列。

总是建议为JavaScript例程创建一个库,而不是将函数转储到全局命名空间中,但是你可以在JavaScript文档中阅读它。

答案 1 :(得分:0)

我使用$ object-> js(true,'你的js在这里');但是有问题:

如果满足某些条件,我将页面重定向到其他地方,js函数如下:

top.location = "http://some-url.com?param1=AAA&param2=BBBB"

但&字符转换为:&

I know i can use $this->api->redirect('some-url', array('param1'=>AAA, 'param2'=>BBB));

但由于某些原因我必须使用js函数,但只能正确读取html字符..如何实现这个?