Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
AngularJS多次设置相同的ngapp_Angularjs - Fatal编程技术网

AngularJS多次设置相同的ngapp

AngularJS多次设置相同的ngapp,angularjs,Angularjs,我遇到的问题是我需要根元素作为锚定标记,然后在锚定标记下需要一个div。他们都将使用属于同一应用程序的同一个角度控制器。vm.Open上的数据绑定可以在锚标记内找到,但在div标记内不起作用。如何将div标记也引导为控制器“ordercontrol”的“app”? 现在我有: 我的HTML <a data-ng-app="app" data-ng-controller="ordercontrol as vm" href="#" data-ng-click="vm.Open = !vm.Op

我遇到的问题是我需要根元素作为锚定标记,然后在锚定标记下需要一个div。他们都将使用属于同一应用程序的同一个角度控制器。vm.Open上的数据绑定可以在锚标记内找到,但在div标记内不起作用。如何将div标记也引导为控制器“ordercontrol”的“app”? 现在我有:

我的HTML

<a data-ng-app="app" data-ng-controller="ordercontrol as vm" href="#" data-ng-click="vm.Open = !vm.Open">{{vm.Open}}</a>

<div data-ng-app="app" data-ng-controller="ordercontrol as vm" id="QuickOrderDiv">
    <div class="row">
        {{vm.Open}} //showing as '{{vm.Open}}' inside page
    </div>
</div>

{{vm.Open}}//在页面内显示为“{vm.Open}}”
,每个HTML文档只能引导一个应用程序。您可能没有理由尝试在一个文档中声明和使用多个应用程序。根据您的意图,有几种方法可以继续

首先,请记住:将一个元素分配给一个元素(使用
ng controller
指令)将创建一个从父元素继承的新元素。该范围内使用的所有元素、指令和其他控制器都可以使用该控制器共享功能。因此,从本质上讲,控制器用于集中特定于应用程序和视图的模型和应用程序逻辑(想想应用程序中的任何功能任务,例如订单或登录页;这些都由控制器提供服务)

如果您希望在整个应用程序中多次重用某个行为,并且该行为并非特定于应用程序中的特定视图(请考虑组件,例如日期选择器,或者购物车状态图标/链接),则您可能希望将逻辑封装在一个视图中

现在,存在一些重叠(例如,指令可以有自己的作用域或控制器),并且在使用其中一个或另一个时可能会混淆。如上所述,控制器主要用于包含应用程序中视图的业务逻辑。指令是更正交、封装的模板和逻辑,a)您可以轻松地在应用程序中的视图之间重用,b)使用更丰富的标记和编程行为扩展现有HTML元素。您可以使用服务(它是单个实例对象)来协调控制器和指令之间的数据

新开发人员面临的另一个常见问题是独立维护或继承不同的状态,考虑到每个文档只能有一个
ng视图
元素。在这种情况下,考虑。


根据我的猜测,您可能需要某种QuickOrder指令,该指令绑定到
OrderController
上的一个值,以确定它是否应该显示,并包含用于显示订单或其他内容的额外模板标记以及管理它的逻辑。

使用一个应用程序和两个控制器实例是否更有意义?