我是新的角度和我想知道如何我可以在角度控制器之间共享一个变量。我使用以下脚本 –
在Main.js中:
- function MainCntl($scope) {
- ---code
- }
- function SearchCtrl($scope,$http) {
- $scope.url = 'http://10.0.0.13:9000/processAdHoc';
- $scope.errorM = "No results";
- $scope.search = function() {
- $http.post($scope.url,{ "data" : $scope.keywords}).
- success(function(data,status) {
- $scope.status = status;
- $scope.data = data;
- $scope.result = data;
- alert('yes');
- })
- .
- error(function(data,status) {
- $scope.data = data || "Request Failed";
- $scope.status = status;
- alert('no');
- $scope.result = "Failed";
- });
- };
- }
在Index.html中
- <body ng-controller="MainCntl" >
- ---code
- <div ng-controller="SearchCtrl">
- <form class="well form-search">
- <div class="ui-widget">
- <label for="tags"></label>
- <a ng-click="search()"><input type="image" src="../../images/search1.png" class="searchBox_submit" /></a>
- <input ng-model="keywords" placeholder="Shadow Search" id="tags" class="input-medium search-query rounded" />
- </div>
- </form>
- </div>
- ---code
- <p ng-model="result">
- {{result}}
- </p>
- </body>
一切工作良好与ajax我发送数据和接收响应,我的问题如下:
在SearchCtrl函数中,我有一个名为$ scope.result的变量,稍后在Index.html中引用。如果我插入包含该变量的HTML代码到SearchCtrl控制器,它工作正常,但如果它是在MainCtrl控制器,它不工作。如何在控制器之间共享此变量。
先谢谢
使用服务并将它注入到两个控制器,并将范围vars引用到服务变量。
例:
- angular.module("yourAppName",[]).factory("myService",function(){
- return {sharedObject: {data: null } }
- });
- function MainCtrl($scope,myService) {
- $scope.myVar = myService.sharedObject;
- }
- function SearchCtrl($scope,$http,myService) {
- $scope.myVar = myService.sharedObject;
- }
在你的模板做:
- {{myVar.data}}
See an example使用Angular v1.1.5
将它放在内部对象中的原因是保留引用,如果保持它没有“sharedObject”,并更改该对象,您的绑定将指向旧的引用,并且不会在模板中显示任何内容。