【发布时间】:2014-11-21 12:26:26
【问题描述】:
我在控制器之间共享数据时遇到问题。
我创建了一个包含 2 个独立控制器的页面。一个带有搜索表单,另一个带有表格以显示搜索结果。
我创建了这 2 个独立的控制器来保持清洁,并让每个控制器处理其各自的屏幕部分。因此,我将处理搜索和检索结果的逻辑放在注入两个控制器的服务中。 服务的 search() 方法使用结果设置数据属性,结果属性设置为控制器内部的 $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...');
});
}
}
}]);
【问题讨论】:
-
你的小提琴没有搜索数据,点击按钮没有任何反应。
-
我忽略了搜索实现,因为这不是问题。我更改了示例代码以返回一些虚拟数据:jsfiddle.net/ranthonissen/0a75uh34/5
标签: angularjs angularjs-scope angularjs-service angularjs-controller