如何从主控制器发送数据到 angular 中的视图控制器?
How can I emit data from main controller to view controller in angular?
我想在 angular 中创建一个应用程序。
我有视图外的主控制器和视图的特定控制器。
如何从主控制器向视图的控制器(家庭控制器)发送数据?
我想在从主控制器发出数据后在视图控制器中执行该功能。
我试过使用 - $emit
和 $on
但在我的情况下它不起作用。
我的代码例如:
https://jsfiddle.net/32hb3odk/7/
Index.html
<div ng-app="myApp">
<div class="head-part" ng-controller="MainController as main">
<h1>Header</h1>
<input ng-click="main.EmitData()" type="button" value="Emit data to child control" />
<br /> <br />
</div>
<div class="view-part">
<h2>View:
</h2>
<div ng-view></div>
</div>
<script type=text/ng-template id=home.html>
<div>{{home.title}}</div>
</script>
</div>
Javascript:
angular.module('myApp', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
controller: 'HomeController',
controllerAs: 'home',
templateUrl: 'home.html'
})
.otherwise('/');
}]);
angular.module('myApp').controller('HomeController', ['$scope',function ($scope) {
var vm = this;
vm.title = 'Homepage';
$scope.$on('EmitMain', function(){
alert("GetDataFromMainController");
});
}]);
angular.module('myApp').controller('MainController', ['$scope', function ($scope) {
var vm = this;
vm.EmitData = function(){
$scope.$emit('EmitMain');
}
}]);
那是因为 $emit
上树了。使用 $broadcast
代替,因为它向下遍历树。
我想在 angular 中创建一个应用程序。
我有视图外的主控制器和视图的特定控制器。
如何从主控制器向视图的控制器(家庭控制器)发送数据?
我想在从主控制器发出数据后在视图控制器中执行该功能。
我试过使用 - $emit
和 $on
但在我的情况下它不起作用。
我的代码例如: https://jsfiddle.net/32hb3odk/7/
Index.html
<div ng-app="myApp">
<div class="head-part" ng-controller="MainController as main">
<h1>Header</h1>
<input ng-click="main.EmitData()" type="button" value="Emit data to child control" />
<br /> <br />
</div>
<div class="view-part">
<h2>View:
</h2>
<div ng-view></div>
</div>
<script type=text/ng-template id=home.html>
<div>{{home.title}}</div>
</script>
</div>
Javascript:
angular.module('myApp', ['ngRoute'])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
controller: 'HomeController',
controllerAs: 'home',
templateUrl: 'home.html'
})
.otherwise('/');
}]);
angular.module('myApp').controller('HomeController', ['$scope',function ($scope) {
var vm = this;
vm.title = 'Homepage';
$scope.$on('EmitMain', function(){
alert("GetDataFromMainController");
});
}]);
angular.module('myApp').controller('MainController', ['$scope', function ($scope) {
var vm = this;
vm.EmitData = function(){
$scope.$emit('EmitMain');
}
}]);
那是因为 $emit
上树了。使用 $broadcast
代替,因为它向下遍历树。