Javascript 控制器构造函数函数以角度执行多次
所以我的问题是Javascript 控制器构造函数函数以角度执行多次,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,所以我的问题是Controller构造函数执行多次。如果我有2个与特定的控制器关联的指令,那么它运行2+1,如果有3个指令,那么3+1。。。等等如果我在那个控制器中有一个ajax请求来获取数据,那么它会运行很多次,这其实并不必要 为什么会这样?我非常担心它会使所有这些额外的不必要的ajax请求 HTML: <span ng-controller="MenuController as MenuCtrl"> <main-menu></main-menu>
Controller
构造函数执行多次。如果我有2个与特定的控制器关联的指令
,那么它运行2+1
,如果有3个指令
,那么3+1
。。。等等如果我在那个控制器中有一个ajax请求来获取数据,那么它会运行很多次,这其实并不必要
为什么会这样?我非常担心它会使所有这些额外的不必要的ajax请求
HTML:
<span ng-controller="MenuController as MenuCtrl">
<main-menu></main-menu>
</span>
var howManyTimes = 0;
angular.module("shredkit", ["myDirectives"])
.controller("MenuController", function(){
++howManyTimes;
console.log("HOW MANY TIMES? THAT MANY: " + howManyTimes )
})
angular.module("myDirectives", [])
.directive("mainMenu", function(){
return{
restrict:"E", // type of directive - 'E' - element
templateUrl:'templates/main-menu.html',
controller:"MenuController",
controllerAs: "MenuCtrl"
};
})
指令:
<span ng-controller="MenuController as MenuCtrl">
<main-menu></main-menu>
</span>
var howManyTimes = 0;
angular.module("shredkit", ["myDirectives"])
.controller("MenuController", function(){
++howManyTimes;
console.log("HOW MANY TIMES? THAT MANY: " + howManyTimes )
})
angular.module("myDirectives", [])
.directive("mainMenu", function(){
return{
restrict:"E", // type of directive - 'E' - element
templateUrl:'templates/main-menu.html',
controller:"MenuController",
controllerAs: "MenuCtrl"
};
})
为ng控制器标记运行一次控制器:
<span ng-controller="MenuController as MenuCtrl">
之所以会出现这种情况,是因为angular中的控制器不是单音,它们是在每次使用时构造和初始化的
如果您打算使用多控制器,因为您想共享数据,请通过以下两种方式:
让父控制器包装所有子控制器
使用共享服务保存状态
为ng控制器标记运行一次控制器:
<span ng-controller="MenuController as MenuCtrl">
之所以会出现这种情况,是因为angular中的控制器不是单音,它们是在每次使用时构造和初始化的
如果您打算使用多控制器,因为您想共享数据,请通过以下两种方式:
让父控制器包装所有子控制器
使用共享服务保存状态
在div和指令(同一个)中使用MenuController。显然,控制器是为每个元素执行的,它们被指定包含指令中的赋值您在div和指令中使用MenuController(同一个)。显然,控制器是为每个元素执行的,它们被认为包括指令中的赋值如果要使用调用该控制器的指令,则不需要在span标记上有ng控制器
。(见下面本的答案)谢谢,我想我现在明白了!如果要使用调用该控制器的指令,则不需要在span标记上有ng控制器
。(见下面本的答案)谢谢,我想我现在明白了!假设-每个指令一个控制器是正确的吗?@fjckls更可能说定义此控制器的每个dom元素一个控制器,可以是一个指令也可以是不正确的假设-每个指令一个控制器是正确的吗?@fjckls更可能说定义此控制器的每个dom元素一个控制器,可以是指令也可以不是