我实质上是在尝试创建可在WordPress页面编辑器中使用的html组件块。我遇到的问题是每个块都在使用ng-controller指令来访问所述控制器的范围。这会导致创建相同控制器的新实例,这会导致显示的块出现延迟(这也不可行)。
我当前设置应用程序的方式是使用链接到html大页面的短代码,这对于最终用户而言不容易管理,并且脱离了我想要实现的基于组件的结构。我已经尝试过使用angularjs .component()指令,但是遇到了与新控制器实例相同的问题。
<div ng-controller="someCtrl">
--- first html block that loads first ---
</div>
<div ng-controller="someCtrl">
--- second html block that is delayed until after the first is loaded ---
</div>
本质上,我想知道的是是否有一种方法可以访问同一控制器(不包括包装器)而不创建该控制器的新实例?
答案 0 :(得分:0)
答案是否定的。控制器的每个实例将是一个新实例。您可以利用@TheUnknown的建议在这些实例之间共享数据,因为服务是单例的。
答案 1 :(得分:0)
您可以使用ng-if使用相同的控制器。 所以当
<div ng-if="loadFirstHtmlBlock"></div>
是真的。它只会加载特定的<div>
。
同样适用
<div ng-if="loadSecondHtmlBlock">
这只是您可以使用的一种简单方法。
答案 2 :(得分:0)
我发现解决此问题的最佳方法(在angularjs中)的最终结果将是添加不同的组件,以及各自具有从服务中获取信息的控制器。这样一来,页面上的性能会大大提高,加载方式也会更加“同步”。