2015-09-25 6 views
7

Ich bin ein Anfänger in angularjs und derzeit habe ich ein Problem mit ng-include.ng-Modell funktioniert nicht in ng-include

Ich habe eine Test-App mit Teiltönen. Hier ist mein Code.

<html ng-app ="TextboxExample"> 
    <head> 
     <title>Settings</title> 
     <script src="angular.js"></script> 
    </head> 

    <body ng-controller="ExampleController"> 
     <div ng-include src = "'view.html'"></div> 
     <script> 
      angular.module('TextboxExample', []) 
      .controller('ExampleController', ['$scope', function($scope) { 
       $scope.textboxVal = 'fddfd'; 

       $scope.ReadGeneralSettings = function() { 
       alert($scope.textboxVal); 
       } 
       $scope.ResetGeneralSettings = function() { 

       $scope.textboxVal = 'fddfd'; 
       } 

      }]); 
     </script> 
     <button class="pull-right" ng-click = "ReadGeneralSettings()">Read</button> 
     <button class="pull-right" ng-click = "ResetGeneralSettings()">Cancel</button> 



    </body> 
</html> 

Der Teilcode view.html ist

<input type="text" ng-model="textboxVal"> 

Aus irgendeinem Grund eingestellt textboxVal zu ng-Modell nicht aktualisiert, wenn ich den Wert in das Textfeld eingeben. Aber das funktioniert gut, wenn ich nicht ng-include und direkt den Inhalt von view.html in die Haupt-HTML-Datei hinzufügen. Bitte helfen.

Dank Sunil

+0

ng-include erstellt einen neuen Bereich –

+0

ok, also kann ich es funktionieren lassen? –

+0

Überprüfen Sie meine Antwort unten –

Antwort

14
in Partial Use

Verwenden $ parent für den Zugriff auf den Umfang der Controller

Demo

<input type="text" ng-model="$parent.textboxVal"> 
2

Das Problem ist, dass ngInclude neue Möglichkeiten schaffen, so dass das Modell, das Sie innerhalb Teilvorlage definiert mit ngModel Arbeiten mit lokalem Bereich Wert und Außen ExampleController kann es nicht sehen.

Die einfache Lösung ist prototypischen Kette von Rahmen Objekten zu verwenden, dann wird Innenumfang erben und Modellwert von dem äußeren Bereich verwenden:

<body ng-controller="ExampleController"> 
    <div ng-include src = "'view.html'"></div> 
    <script> 
     angular.module('TextboxExample', []) 
     .controller('ExampleController', ['$scope', function($scope) { 
      $scope.model.textboxVal = 'fddfd'; 

      $scope.ReadGeneralSettings = function() { 
      alert($scope.model.textboxVal); 
      } 
      $scope.ResetGeneralSettings = function() { 
      $scope.model.textboxVal = 'fddfd'; 
      } 

     }]); 
    </script> 
    <button class="pull-right" ng-click = "ReadGeneralSettings()">Read</button> 
    <button class="pull-right" ng-click = "ResetGeneralSettings()">Cancel</button> 

</body> 

und dann als

<input type="text" ng-model="model.textboxVal">