在angular.js的控制器之间共享一个变量



我是angular的新手,我想知道如何在angular的控制器之间共享变量。我正在使用以下脚本-

在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";
        });
    };
}

In 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的变量。结果,稍后在Index.html中引用。如果我插入包含该变量的html代码到SearchCtrl控制器,它工作正常,但如果它是在MainCtrl控制器,它不工作。如何在控制器之间共享这个变量

Thanks ahead

使用一个服务并将其注入到两个控制器中,并将你的作用域变量引用到services变量。

的例子:

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}}

参见使用Angular v1.1.5

的示例

你把它放在一个内部对象的原因是为了保存你的引用,如果你保留它没有一个"sharedObject",并改变了这个对象,你的绑定将指向旧的引用,不会在模板中显示任何东西。

相关内容

  • 没有找到相关文章

最新更新