gpt4 book ai didi

ajax - 在 angular.js 中的 Controller 之间共享变量

转载 作者:行者123 更新时间:2023-12-03 09:01:38 27 4
gpt4 key购买 nike

我是 Angular 的新手,我想知道如何在 Angular Controller 之间共享一个变量。我正在使用以下脚本 -

在 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 Controller 中,它可以正常工作,但如果它在 MainCtrl Controller 中,则它不起作用。如何在 Controller 之间共享此变量。

提前谢谢

最佳答案

使用服务并将其注入(inject)两个 Controller 并将您的范围变量引用到服务变量。

例子:

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”的情况下保留它,并更改该对象,您的绑定(bind)将指向旧引用并且不会在模板中显示任何内容。

关于ajax - 在 angular.js 中的 Controller 之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16508666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com