Angulaire de bootstrap de l'interface utilisateur modal de la portée de la liaison avec les parents
Je vais avoir Angulaire problème de l'obtention d'un modal portée de supprimer la liaison de la portée parent. Je veux que le champ d'application objet que je passe dans la modale d'être distincte de la portée correspondante de l'objet.
N'importe comment j'structure modale de l'objet parent les miroirs. La seule solution que j'ai trouvé est de changer l'objet de la propriété des noms, mais qui serait lourd de le faire pour chaque modal dans mon projet.
Par exemple, je peux avoir un $portée variable dans le parent $champ d'application.parentData.prénom et un modal variable $scope.modalData.un.b.c.prénom, et le parent de refléter la valeur dominante.
Je suppose qu'il est un parent de l'enfant $questions de portée, d'ici que je ne suis pas arriver.
Voici une plunk illustrant la question:
http://plnkr.co/edit/5naWXfkv7kmzFp7U2KPv?p=preview
HTML:
<div ng-controller="ModalDemoCtrl">
<script type="text/ng-template" id="myModalContent.html">
<div class="modal-header">
<h3>I'm a modal!</h3>
</div>
<div class="modal-body">
<input ng-model="modalData.a" />
<input ng-model="modalData.b" />
<input ng-model="modalData.c" />
Selected: <b>{{ sourceData }}</b>
</div>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="ok()">OK</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
</script>
<button class="btn btn-default" ng-click="open()">Open me!</button>
{{sourceData}}
<div ng-show="sourceData">Selection from a modal: {{ test }}</div>
</div>
</body>
</html>
JS:
angular.module('plunker', ['ui.bootstrap']);
var ModalDemoCtrl = function ($scope, $modal, $log) {
$scope.sourceData = {a:'abc',b:'bcd',c:'cde'};
$scope.open = function () {
var modalInstance = $modal.open({
templateUrl: 'myModalContent.html',
controller: ModalInstanceCtrl,
resolve: {
data: function () {
return $scope.sourceData;
}
}
});
modalInstance.result.then(function (selectedItem) {
$scope.scopeData = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
};
};
//Please note that $modalInstance represents a modal window (instance) dependency.
//It is not the same as the $modal service used above.
var ModalInstanceCtrl = function ($scope, $modalInstance, data) {
$scope.modalData = {};
$scope.modalData = data;
$scope.ok = function () {
$modalInstance.close($scope.modalData);
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
angular.copy(object)
. Devez vous rappeler que les objets sont passés par référence, à moins que vous les cloner. Cela n'a rien à voir avec angulaires, il est natif javascript héritage par prototype question. Après vous modifiez la copie si vous souhaitez fusionner entre eux utilisent angular.extend()
plnkr.co/modifier/jAo0c354puN17OX7Ysgl?p=preview
OriginalL'auteur jbwilhite | 2014-11-03
Vous devez vous connecter pour publier un commentaire.
Vous êtes de passage à une référence de votre objet, ce que vous voulez faire est d'utiliser
angulaire.copier()
de transmettre une copie de l'objet à l'modal plnkr:OriginalL'auteur Jason Goemaat