2

我正在尝试在几个月前开始的项目中使用 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.
})

谢谢(对不起我的英语不好)!

4

2 回答 2

1

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

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

为了让开发人员感到舒适,如果您使用 JavaScript 编写代码,这非常容易:

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

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

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

于 2012-05-31T23:32:42.877 回答
0

我正在使用 $object->js(true, 'your js here');,但有一个问题:

如果满足某些条件,我会将页面重定向到其他内容,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 字符。如何完成这个?

于 2014-10-06T20:27:31.707 回答