在我的角度項目中,我使用Angular.js material。我想要顯示$mdialog
與自定義控制器,其中用戶更改一些數據,這些數據應該適用於我的$scope
變量。比如我現在做的事:Angular.js從另一個控制器回調
function myControllerFn($scope, MyService){
// I do copy of my service variable because I don't want to change it until user will click save button
$scope.name = angular.copy(MyService.name);
$scope.editCurrentProfile = function() {
$scope.showEditProfileDialog($scope.name).then(function(name){
$scope.name = name;
}
}
$scope.showEditProfileDialog = function(name) {
var deferred = $q.defer();
$mdDialog.show({
controller: 'editProfileViewCtrl',
templateUrl: 'controllers/editProfileDialog.tmpl.html',
locals: {
name: name,
deferred: deferred
}
});
return deferred.promise;
};
}
然後在對話框控制我做的:
function editProfileViewCtrl($scope, name, deffered) {
deferred.resolve('newName');
}
但我認爲這是錯誤的方式。那麼在沒有新服務的情況下,兩個視角控制器之間以角度進行通信的最佳方式是什麼?或者更好地創建另一個服務,如:EditDialogService
,我將保存結果?
怎麼樣錯誤(拒絕承諾)? – Arti
啊,對不起。找到了 !可以使用$ mdDialog.hide()解決的承諾或使用$ mdDialog.cancel()拒絕的承諾。謝謝 – Arti