Ajax 在angular.js中的控制器之间共享变量
我是angular的新手,我想知道如何在angular中的控制器之间共享变量。我正在使用以下脚本- 在Main.js中:Ajax 在angular.js中的控制器之间共享变量,ajax,angularjs,global-variables,Ajax,Angularjs,Global Variables,我是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 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>
---代码
---代码
{{result}}
在ajax中一切都很好。我正在发送数据并收到响应,我的问题如下:
在SearchCtrl函数中,我有一个名为$scope.result的变量,该变量稍后在Index.html中引用。如果我将包含该变量的html代码插入SearchCtrl控制器,它可以正常工作,但如果它在MainCtrl控制器中,它就不能工作。如何在控制器之间共享此变量
提前感谢使用服务并将其注入两个控制器,并将范围变量引用到服务变量 例如:
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”的情况下保留它,并更改该对象,则绑定将指向旧引用,并且不会在模板中显示任何内容。嗨,ShaiRez,感谢您的快速回答和示例,但遗憾的是,它仍然不起作用。。。也许我没有正确地实现它。我添加了您在示例中提供的所有内容,并将模板更改为{{myVar.data}。出现了两个问题,我是否也应该更改templates视图,并将myVar添加到ajax调用的success/error函数中?再次感谢,Gidona在阅读了更多内容后,我发现使用$rootScope可以更轻松地完成此任务。。。无论如何,感谢您在angular Meetitups上的时间和荣誉,我将尝试进行下一次:)@ShaiRez是处理身份验证的首选模型?在服务中进行身份验证(如果尚未登录),并将用户模型返回给所有需要它的控制器?这是一个不同的问题,如果我的理解正确,请使用登录服务或用户服务来保存该模型的通信或属性kind@Gidon我编辑了答案,请参见jsbin上添加的示例。另外,ShaiRez的代码中有一个错误。