我想使用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