gpt4 book ai didi

javascript - 我可以在另一个 Controller 中获取一个 Controller 的 Angular 变量吗(由 $http 变量)

转载 作者:行者123 更新时间:2023-11-29 10:37:02 24 4
gpt4 key购买 nike

我是 Angularjs 的新手,学习了很多。但我卡在了一个点上。谷歌没有帮助我。我有一个 Controller ,我在 $scope.results

中有数据
app.controller('manage_categories', function($scope, $http, $filter, $window) {
$scope.results = [];
$http({
url: base_url + 'employee/fetchData?table=results',
method: "POST",
}).success(function(data) {
$scope.results = data;
});
})

现在我想在没有任何其他 $http 调用的情况下访问其他相同的内容。我已经完成了另一个电话,但我不想要这个。因为我在许多其他 Controller 中需要这个。像这样的东西

app.controller('manage_users', function($scope, $http, $filter, $window,results) {
$scope.results = results;
//~ $http({
//~ url: base_url + 'employee/fetchData?table=results',
//~ method: "POST",
//~ }).success(function(data) {
//~ $scope.results = data;
//~ });
})

或任何其他方法。谢谢。

更新

我试过了

var myApp = angular.module('myApp',[]);
myApp.factory('results', function() {
return {
name : [{id:21,name:'this is test'}]
};
});

app.controller('manage_users', function($scope, $http, $filter, $window,results) {
$scope.results = results;
})

这工作正常。但不能使用 $http 调用。

var myApp = angular.module('myApp',[]);
myApp.factory('results', function($scope,$http) {
$scope.results=[];
$http({
url: base_url + 'employee/fetchData?table=results',
method: "POST",
}).success(function(data) {
$scope.results = data;
});
return {
name : results
};
});

更新 2

回答后我这样写

var canapp = angular.module('canApp', ["ngRoute", "angularFileUpload"]);
canapp.service('ResultsFactory', ['$http', function($http) {
// http call here
var url=base_url + 'employee/fetchData?table=results';
$http.post(url,data).success(function(data){
this.results = data;
});

}])

这样调用

canapp.controller('get_candidates', function($scope, $http, $filter, $timeout, $window, ResultsFactory) {
$scope.check=ResultsFactory.results;
});

但它没有在模板中设置值

最佳答案

使用$broadcast 在 Controller 之间共享数据。您的代码将如下所示

app.controller('manage_categories', function($scope, $http, $filter, $window, $rootScope) {
$scope.results = [];
$http({
url: base_url + 'employee/fetchData?table=results',
method: "POST",
}).success(function(data) {
$scope.results = data;
$rootScope.$broadcast("results",data);
});
});

app.controller('otherCtrlr', function($scope, $rootScope) {
$rootScope.$on("results", function(event, data){
$scope.results = data;
});
});

But using a service call in the controller is not a best approach. Create a factory and create a method to call your service. From controller you need to call this method. But to avoid two service calls, you definitely need to use broadcast/emit(depending on data transfer is from parent or child)

关于javascript - 我可以在另一个 Controller 中获取一个 Controller 的 Angular 变量吗(由 $http 变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34946170/

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