Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新启动/重新加载应用程序_Javascript_Jquery_Html_Angularjs - Fatal编程技术网

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

Javascript 重新启动/重新加载应用程序,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我正在和Yii2和Angular一起做一个项目。守则的结构如下: <html ng-app="myApp"> <head.../> <body> ... <div class="body-content"> MAIN CONTENT GOES HERE </div> ... </body> </html> ... 主要内容在这里 ..

我正在和Yii2和Angular一起做一个项目。守则的结构如下:

<html ng-app="myApp">

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

</html>

...
主要内容在这里
...
页面左侧包含一个标题和一列,以及一个在
.body content
div中呈现的中心区域。现在,正如您所想象的,我在其中有一些按钮,一些其他角度小部件,等等

Yii2有一个非常酷的功能,名为
renderPartial
,它将重新渲染视图文件,而无需在
中再次包装它。我使用它来更新我的主要区域的内容,方法是调用该函数,用jQuery获取响应并替换内容


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

对于Angular,您必须使用手动引导方式(在中解释),但这样做会随着时间的推移导致内存泄漏,因为Angular add listener位于您破坏的DOM上,并且不知道它被删除,所以它们会保留,控制器/指令/绑定和代码引用的其他特性也是如此


Yi2是否可以包装成一个角度指令?

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

据我所知,Angular最适合在获取数据的同时处理一切(无论是从JSON或您选择的其他格式的后端),而不是新的DOM元素

Angular本身绑定到它添加到的任何DOM节点,处理内容和依赖项注入,从而显示数据。在您的例子中,后端PHP框架似乎提供了新的DOM元素,Angular认为“嘿,你不想让我添加它们吗?好吧,那么我不想添加。”然后中断

也许这个特定案例有解决方案,但如果我是你,我会重新思考这个概念,使用两种不同的框架,更不用说语言,“我希望我的视图/模板呈现在哪里?整体的哪个部分负责什么?”,做同样的工作,互相干涉会把事情搞得一团糟,我不想去收拾


所以,如果你喜欢这个Yii2特性,并且想让它工作起来,很好——但是在这种情况下——你需要什么呢?如果你想坚持使用Angular,你只需要有一个后端来处理数据,并将其交回前端来完成它的工作。

@adt No。我不会因为Angular无法重新加载自身而重新编写Yii提供给我的所有小部件。我真的不确定这会如何工作。是的,我可以在指令中包装我想要的任何东西,但那会有什么作用呢?或者你的意思是将
正文内容的整个内容包装在一个指令中?我对yii2框架知之甚少,但我假设它是一个javascript库,您可以使用某种模板指定要呈现的内容,您可以注册一个以角度替换
正文内容的指令,并使用yii2框架与普通框架一样,您可以像中所解释的那样重新启动angular指令,angular将负责分析html属性,并发挥其神奇作用。@VladTheLad感谢您注意到yii2是一个后端渲染框架,这比我预期的更矛盾。最好选择一个或另一个,否则你将走一条非常困难的道路,使这项工作。也许Yii2可以呈现应用程序中使用的角度模板。我使用Yii2处理大多数内容,使用角度模板处理一些边缘情况,在这些情况下,使用角度模板比使用Yii2更容易控制用户。我这么做是因为它更快更容易(别忘了Angular仍然是DIY,有很多指令,而Yi2有很多现成的东西)。Mh,我仍然很确定没有Angular你会更好(据我所知,React可能是你的最佳人选,但还没有使用过它)在这种情况下——如果您寻求的是输入控制,那么成熟的MVVC可能不是最佳选择