我想將工廠服務中的列表對象返回給控制器。列表對象包含數據,當我從服務中返回它時,但是當控件到達調用控制器時,列表變爲空(值丟失)。AngularJs中從工廠服務到控制器的返回值丟失
我所說的NG-變化= 「搜索()」 上的文字輸入
下面的代碼:
factoryservice.js
app.factory('newService', ['$http', '$q','$filter', function ($http, $q, $filter)
{
var ServiceFactory = {};
var searchMatch = function (haystack, needle) {
if (!needle) {
return true;
}
return haystack.toString().toLowerCase().indexOf(needle.toLowerCase()) !== -1;
};
var _search = function (Items, data, sortingOrder, query, reverse) {
Items = $filter('filter')(data, function (item) {
for (var attr in item) {
if (angular.isUndefined(item[attr]) || item[attr] === null)
continue;
if (searchMatch(item[attr], query))
return true;
}
return false;
});
// take care of the sorting order
if (sortingOrder !== '') {
Items = $filter('orderBy')(Items, sortingOrder, reverse);
}
return Items;
};
ServiceFactory.search = _search;
return ServiceFactory;
}]);
這裏, 「迴歸項目」 在搜索方法具有適當的值。
controller.js
app.controller('mycontroller', ['$scope', '$http', '$filter', 'Service', function ($scope, $http, $filter, Service) {
var sortingOrder = 'Site';
$scope.sortingOrder = sortingOrder;
$scope.reverse = false;
$scope.Items = [];
$scope.Data = function() {
$scope.loading = true;
$http({
url: "http://localhost:50100/api/mycontroller",
dataType: 'json',
method: 'GET',
data: '', // data:'', for input parameters, create a small entity class and assign it
headers: {
"Content-Type": "application/json"
// "Content-Type": 'application/x-www-form-urlencoded'
}
}).success(function (response) {
$scope.Data = response;
$scope.Items = $scope.Data;
})
.error(function (error) {
alert(error);
})
.finally(function() {
$scope.loading = false;
});
}
$scope.search = function() {
return Service.search($scope.Items, $scope.Data, $scope.sortingOrder, $scope.query, $scope.reverse);
};
}]);
這裏,$ scope.search包含空值(數據被丟在這裏)。
我是angularJS的新手,希望有人能幫助我解決這個問題。提前致謝。
你能創建一個plunker或jsfiddle來演示這個 – gh9
'$ scope.search'應該永遠不會包含數據嗎?這只是一個功能。它應該返回數據。您是否曾嘗試在工廠中使用制動點進行調試? –
是的Bjorn,我將Service.search分配給$ scope.search,它現在似乎正在工作。 – Desparado