我在控制器之间共享数据时遇到问题。AngularJS:如何使用服务来检索数据并在控制器之间共享?
我用2个独立的控制器创建了一个页面。一个带有搜索表单,另一个带有表格以显示搜索结果。
我已经创建了这两个独立的控制器来保持事物的清洁,并让每个控制器处理其各自的屏幕部分。因此,我将处理搜索的逻辑和检索结果的逻辑放入一个注入两个控制器的服务中。 服务的search()方法用结果设置数据属性,并将result属性设置为控制器内的$ scope属性。
我认为它是这样工作的,但它没有。数据被正确检索并设置为服务属性,但不会反映到控制器属性中。我在这里做错了什么或缺少什么?
任何帮助非常感谢!
代码:两个控制器之间http://jsfiddle.net/0a75uh34/3/
var app = angular.module('app', []);
app.controller('searchController', [
'$scope', 'searchService',
function ($scope, searchService) {
$scope.search = {};
$scope.data = searchService.data;
$scope.submit = function() {
searchService.search($scope.search);
}
}]);
app.controller('searchListController', [
'$scope', 'searchService',
function ($scope, searchService) {
$scope.data = searchService.data;
$scope.test = function() {
console.log($scope.firms.length);
}
}]);
app.factory('searchService', [
'$http',
function ($http) {
return {
data: [],
search: function (params) {
var this$ = this;
$http.post('/echo/json/', params)
.success(function (result) {
this$.data = result;
})
.error(function() {
console.log('Oops...');
});
}
}
}]);
你拨弄没有搜索数据,单击按钮不会发生任何事情。 – CrazyGeek 2014-11-21 12:45:04
我遗漏了搜索实现,因为这不是问题。我更改了示例代码以返回一些虚拟数据:http://jsfiddle.net/ranthonissen/0a75uh34/5/ – ranthonissen 2014-11-21 12:56:26