Javascript AngularJs ng视图更改父控制器的值
您好,我面临一个有关ng view的问题。 这是代码Javascript AngularJs ng视图更改父控制器的值,javascript,angularjs,Javascript,Angularjs,您好,我面临一个有关ng view的问题。 这是代码 <header ng-controller="headCtrl" ng-show="landing.ifLandind"> </header> <div ng-view></div> 当ng视图处于加载状态时,有两个控制器—一个“headCtrl”和其他加载。我想更改ng视图中控制器加载的“landing.ifLandind”。如何在第二个控制器中引用它来更改“h
<header ng-controller="headCtrl" ng-show="landing.ifLandind">
</header>
<div ng-view></div>
当ng视图处于加载状态时,有两个控制器—一个“headCtrl”和其他加载。我想更改ng视图中控制器加载的“landing.ifLandind”。如何在第二个控制器中引用它来更改“headCtrl”中“landing.ifLandind”的值。提前感谢您的帮助为什么不将服务用于控件标题 您可以将服务注入所有需要操纵标头的控制器中 例如:
angular.module('myModule').factory('serviceHeader', function() {
var modelHeader = {
hidden: false,
hide: function() {
this.hidden = true;
},
show: function() {
this.hidden = false;
},
toggle: function() {
this.hidden = !this.hidden;
}
};
// factory function body that constructs shinyNewServiceInstance
return modelHeader;
});
angular.module('myModule').controller('FooController' ['serviceHeader', function(serviceHeader) {
...
serviceHeader.hide(); //hide header
...
}]);
angular.module('myModule').controller('HeaderController', ['$scope', 'serviceHeader', function($scope, serviceHeader) {
$scope.headerHelper = serviceHeader;
}]);
<header ng-controller="HeaderController" ng-show="!headerHelper.hidden">
</header>
<div ng-view></div>
angular.module('myModule').factory('serviceHeader',function(){
var modelHeader={
隐藏:假,
隐藏:函数(){
this.hidden=true;
},
show:function(){
this.hidden=false;
},
切换:函数(){
this.hidden=!this.hidden;
}
};
//构成shinyNewServiceInstance的工厂功能体
返回模型头;
});
角度.module('myModule').controller('FooController'['serviceHeader',函数(serviceHeader){
...
serviceHeader.hide();//隐藏标头
...
}]);
角度.module('myModule').controller('HeaderController',['$scope','serviceHeader',函数($scope,serviceHeader){
$scope.headerHelper=服务头;
}]);
或者您可以使用$watch
$rootScope.Scope
希望这有帮助
关于您可以将$rootScope注入两个控制器(headCtrl和ng view的控制器)。然后在ng veiw的控制器中添加
$rootScope.$emit('controllerLoaded', <value>) //<value> is some value you wish to send
您可以尝试使用语法,但如果这两个控制器是同级控制器而不是父子控制器,则可以考虑使用
$parent
或$rootScope
或使用自定义服务共享状态谢谢。寻求帮助。他非常乐于助人。
$rootScope.$on('controllerLoaded', function(value) {
$scope.landing.ifLandind = ... //add whatever change you want to make
})
So whenever a controller loads event "controllerLoaded" gets emitted and received in headCtrl.