我想使用AngularJS在模态窗口中编辑用户名,但是,在我使用第二个控制器的“update()”函数后,名称保持不变。 $scope.closeThisDialog();
工作正常。我的$on
和$emit
有什么问题?
我的服务:
'use strict';
var myService = function() {
var user = { name: "Peter", surname: "Pitt"};
var service = {};
service.user = user;
return service;
};
module.exports = [myService];
第一控制器:
'use strict';
var FirstController = function ($scope, myService, ngDialog) {
$scope.user = myService.user;
$scope.openModal = function() {
ngDialog.open({templateUrl: 'myTemplate'});
};
$scope.$on("updateUser", function(event, data){
$scope.user = data;
});
};
module.exports = ['$scope', 'myService', 'ngDialog', FirstController];
第二个控制器:
'use strict';
var SecondController = function ($scope, myService, ngDialog) {
$scope.editedUser = angular.copy(myService.user);
$scope.update = function() {
$scope.$emit("updateUser", $scope.editedUser);
$scope.closeThisDialog();
};
};
module.exports = ['$scope', 'myService', 'ngDialog', SecondController];
索引文件:
<html>
<body ng-app="">
<div ng-controller="FirstController">
<a ng-click="openModal()">Edit</a>
Name: {{user.name}} </br>
Surname: {{user.surname}}
</div>
</body>
</html>
和模态窗口:
<script type="text/ng-template" id="edit">
<form ng-controller="SecondController">
<input ng-model="editedUser.name">
<input ng-model="editedUser.surname">
<button ng-click="update()">Submit</button>
</form>
</script>
需要看看你如何把这个控制器放在HTML中?或者他们在不同的页面上? – 2015-03-31 18:57:22
是的,请显示HTML。 – SoluableNonagon 2015-03-31 18:58:27
我想你可以试试从$ rootScope $广播而不是从子范围发出$。 – SoluableNonagon 2015-03-31 19:00:01