AngularJS:在3个控制器之间共享数据

AngularJS:在3个控制器之间共享数据

问题描述:

我在AngularJS中使用工厂方法将名字和姓氏(前两个控制器)的组合显示为全名(在第三个控制器中),但我没有得到所需的输出。这里是我的代码:AngularJS:在3个控制器之间共享数据

<html> 
 
<head> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
 
</head> 
 

 
<body> 
 
    <div ng-app="myApp"> 
 

 
\t \t <div ng-controller="FirstCtrl"> 
 
\t \t \t <input type="text" ng-model="Data.FirstName"> 
 
\t \t \t <br>FirstName is : <strong>{{Data.FirstName}}</strong> 
 
\t \t </div> 
 
\t \t <hr> 
 
\t \t <div ng-controller="SecondCtrl"> 
 
      <input type="text" ng-model="Data.LastName"> 
 
\t \t \t <br>LastName is : <strong>{{Data.LastName}}</strong> 
 
\t \t </div> 
 
     <div ng-controller="ThirdCtrl"> 
 
\t \t \t FullName is : {{Data.FirstName + " " + Data.LastName}} 
 
\t \t </div> 
 

 
\t </div> 
 
\t </div> 
 

 
    <script> 
 
     var myApp = angular.module('myApp', []); 
 

 

 
     myApp.factory('Data', function() { 
 
      return { FirstName: '',LastName:'' }; 
 
     }); 
 

 
     myApp.controller('FirstCtrl', function ($scope, Data) { 
 
      $scope.Data = Data; 
 
     }); 
 

 
     myApp.controller('SecondCtrl', function ($scope, Data) { 
 
      $scope.Data = Data; 
 
     }); 
 
     myApp.controller('ThirdCrl', function ($scope, Data) { 
 
      $scope.Data = Data; 
 
     }); 
 
    </script> 
 
</body> 
 
</html>

能否请你帮助吗?

+1

ThirdCtrl被拼错 – 2015-02-10 06:46:11

<html> 
 
<head> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js"></script> 
 
</head> 
 

 
<body> 
 
    <div ng-app="myApp"> 
 

 
\t \t <div ng-controller="FirstCtrl"> 
 
\t \t \t <input type="text" ng-model="Data.FirstName"> 
 
\t \t \t <br>FirstName is : <strong>{{Data.FirstName}}</strong> 
 
\t \t </div> 
 
\t \t <hr> 
 
\t \t <div ng-controller="SecondCtrl"> 
 
      <input type="text" ng-model="Data.LastName"> 
 
\t \t \t <br>LastName is : <strong>{{Data.LastName}}</strong> 
 
\t \t </div> 
 
     <div ng-controller="ThirdCtrl"> 
 
\t \t \t FullName is : {{Data.FirstName + " " + Data.LastName}} 
 
\t \t </div> 
 

 
\t </div> 
 
\t </div> 
 

 
    <script> 
 
     var myApp = angular.module('myApp', []); 
 

 

 
     myApp.factory('Data', function() { 
 
      return { FirstName: '',LastName:'' }; 
 
     }); 
 

 
     myApp.controller('FirstCtrl', function ($scope, Data) { 
 
      $scope.Data = Data; 
 
     }); 
 

 
     myApp.controller('SecondCtrl', function ($scope, Data) { 
 
      $scope.Data = Data; 
 
     }); 
 
     myApp.controller('ThirdCtrl', function ($scope, Data) { 
 
      $scope.Data = Data; 
 
     }); 
 
    </script> 
 
</body> 
 
</html>

+0

谢谢:)得到它 – 2015-02-10 06:53:50

看来你拼写错误的第三控制器名称。

+0

谢谢:)当你得到错误,如'错误:[ng:areq]'时,得到它 – 2015-02-10 06:52:45

+0

,因为你声明的函数是未定义的。在上面的例子中,你声明了名为'ThirdCtrl'的控制器,但是你还没有定义函数(因为拼写错误)。 – 2015-02-10 06:59:53