2014-03-04 5 views
9

In meinem modalen Template versuche ich ng-model zu verwenden, um einen Wert für den Umfang meines Controllers ($scope.name), aber es funktioniert nicht. Es gibt mir undefined. Was mache ich falsch? Plunker hereng-model Eingabe in einem Winkel-ui Modal Controller ist undefined

Ich erwarte, dass das Modal seinen eigenen Bereich erstellt, und setzt name in diesen Bereich, weil ich ng-model verwendet. Es scheint in der modalen Regler aktiv zu sein, wie ich ausgeben kann es gut {{name}}

<div ng-controller="ModalDemoCtrl"> 
    <script type="text/ng-template" id="myModalContent.html"> 
     <div class="modal-body"> 
      Name: <input type="text" ng-model="name"> 
     </div> 
     <div class="modal-footer"> 
      <button class="btn btn-primary" ng-click="ok()">OK</button> 
     </div> 
    </script> 
    <button class="btn" ng-click="open()">Open me!</button> 
</div> 

mit Javascript:

angular.module('plunker', ['ui.bootstrap']); 
var ModalDemoCtrl = function ($scope, $modal, $log) {  
    $scope.open = function() { 
    var modalInstance = $modal.open({ 
     templateUrl: 'myModalContent.html', 
     controller: ModalInstanceCtrl 
    }); 
    };  
}; 

var ModalInstanceCtrl = function ($scope, $modalInstance) {  
    $scope.ok = function() { 
    $modalInstance.close($scope.name); 
    alert('name was: ' + $scope.name) 
    };  
    $scope.cancel = function() { 
    $modalInstance.dismiss('cancel'); 
    };  
}; 
+0

Sie haben den geschlossenen Tag in das Eingabefeld –

Antwort

22

Das Modell name befindet sich in einem anderen Bereich erstellt. Verwenden Sie ein Objekt:

var ModalInstanceCtrl = function ($scope, $modalInstance) { 
    $scope.data = { 
     name:"" 
    }; 
    $scope.ok = function() { 
     alert('name was: ' + $scope.data.name); 
     $modalInstance.close($scope.data.name); 
    }; 

Plunk

+1

Dank verpasst haben, können Sie erklären, warum es für ein Objekt funktioniert und nicht für eine normale Variable? – Nick

+4

Mit einem "Punkt" machen Sie AngularJS die Prototypkette nachschlagen. Lesen Sie hier mehr: http://StackOverflow.com/Questions/18716113 – AlwaysALearner

+3

Scheint nicht mehr zu funktionieren. – SMir

Verwandte Themen