2012-05-31 70 views
2

我试图在几个月前开始的项目中使用atk4。这个项目是一个应用程序,它有一个菜单,并通过Ajax在div中加载页面。菜单是固定的,永不重新加载。 我想使用atk4来生成新页面并执行数据库工作,只保留当前所做的工作。 页面生成并加载正常,但通过ajax加载的组件未被占用,因为文档就绪事件未被触发。 每次在相应的div中加载一个ajax页面时,我们都会触发一个事件,我们可以从这个事件中调用一个或多个函数让atk4 js系统初始化并添加新的组件?通过ajax加载页面后初始化atk4 js

我们的功能:

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

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

回答

1

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

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

对于开发者的舒适性,如果你是在JavaScript编写代码,这是超级简单:

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

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

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

+0

好吧,我认为问题在于ajax调用由另一个库管理,而不是由atk4管理,并且$ .atk4(function(){...})在加载后不会被触发。例如:我有一个带有必填字段的表单。在浏览器中加载页面会使错误文本在提交时出现在字段下方,因为它必须是。当表单通过ajax“$('#sample_project_login_form_2')。atk4_form('fieldError','user','User是必填字段')加载时,返回OK,但没有任何反应。我想我会尝试从头开始重做这个项目。现在更多的时间,但未来几乎没有问题... – Jaume

+0

也可能发生,因为一些JavaScript解析错误。如果atk4_form未初始化,则错误不会显示。 – romaninsh

0

进出口使用$对象 - > JS(真的,“你在这里的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字符正确..如何实现这一点?

相关问题