重新启动/重新加载Angular应用程序

时间:2015-06-09 22:40:03

标签: javascript jquery html angularjs

我正在与Yii2和Angular合作开展一个项目。代码的结构如下:

<html ng-app="myApp">

    <head.../>
    <body>
        ...
        <div class="body-content"> MAIN CONTENT GOES HERE </div>
        ...
    </body>

</html>

页面左侧包含标题和列,在.body-content div内包含一个中心区域。现在,你可以想象,我有一些按钮,其他一些角度小部件等等。

Yii2有一个名为renderPartial的非常酷的功能,它会重新呈现一个视图文件而不会再次将其包裹在<head><body>中。我用它来更新我的主要区域的内容,通过调用该函数,使用jQuery获取响应并替换内容。

现在,这会导致与Angular绑定的所有按钮停止工作(我猜是为什么)。我的问题是:如何让Angular重新运行或重新绑定我的所有(新)DOM元素到他们的行为?

2 个答案:

答案 0 :(得分:2)

你必须使用手动引导方式(在https://docs.angularjs.org/guide/bootstrap中解释)用于角度,但这样做会导致内存泄漏,因为DOM上的角度添加侦听器会破坏并且不知道它被删除,因此它们会保留,对于控制器/指令/绑定以及代码引用的其他功能也是如此。

是否可以将yii2包装成角度指令?

答案 1 :(得分:0)

我不确定我是否正确 - 你使用前端框架和后端框架来控制你的前端,后者提供你注入HTML的新DOM内容?

据我所知,Angular在处理数据时最好处理所有数据(无论是从JSON的后端还是您选择的其他格式),而不是新的DOM元素。

Angular本身绑定到它添加到的任何DOM节点,处理内容和依赖注入,从而显示您的数据。在你的情况下,后端PHP框架似乎提交了Angular认为的新DOM元素&#34;嘿 - 你不想让我添加它们?很好,然后我不会。&#34;和休息。

也许这个具体案例有解决方案,但如果我是你,我会根据&#34重新思考这个概念;我想在哪里呈现我的观点/模板?整体的哪一部分对什么负责?&#34;使用两个不同的框架,更不用说语言,做同样的工作并互相干扰会弄得一团糟,我不想清理。

所以,如果你喜欢这个Yii2功能并想让它工作,那很好 - 但在这种情况下 - 你需要角度为什么?如果你宁愿坚持使用Angular,你只需要一个处理数据的后端,然后将其交还给前端来完成它的工作。