Я хочу вернуть объект списка с заводского обслуживания на контроллер. Объект списка содержит данные, когда я возвращаю его из службы, но когда элемент управления достигает вызывающего контроллера, список становится пустым (значения теряются).Возвращаемое значение с заводского обслуживания контроллеру в AngularJs потеряно
я называю нг-изменение = "поиск()" на ввод текста
Вот код:
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, надеюсь, кто-то может мне помочь в этом. Заранее спасибо.
Вы можете создать плункер или jsfiddle для демонстрации этого – gh9
'$ scope.search' никогда не должны содержать данные? Это только функция. Он должен возвращать данные. Вы пробовали отладить его с тормозной точки на заводе? –
Да, Бьорн, я присвоил Service.search $ scope.search и, похоже, сейчас работает. – Desparado