Я пытаюсь получить $ rootScope. $ Broadcast для обновления моего представления. служба
это-var app = angular.module("productsApp", [])
.service("serviceProvider", function ($http) {
this.getDatas = function getDatas(data) {
return $http({
method: 'POST', url: serviceUrl + '/GetProductsByCategoryOrName', headers: {
'Authorization': apiKey
},
data: data
})
}
return this
}).factory("sharedService", function ($rootScope) {
var mySharedService = {};
mySharedService.values = [];
mySharedService.passData = function (newData) {
mySharedService.values = newData;
$rootScope.$broadcast('dataPassed', newData);
}
return mySharedService;
});
Вызов через контроллер-
function searchProductsController($scope, $window, serviceProvider, sharedService) {
$scope.submit = function() {
var data = { "query": $scope.searchText, "categoryId": "976759", "pageIndex": 0, "sortDirection": "asc" };
serviceProvider.getDatas(data).then(function (response) {
var result = response;
sharedService.passData(result.data.data);
});
}
};
здесь, в этом контроллере sharedService.passData
который проходит новый массив метода обслуживания. Затем он пытается передать его для изменений с помощью строки. $rootScope.$broadcast('dataPassed', newData)
Я не знаю, почему он не передает изменения для просмотра. Есть ли другой способ трансляции изменений?
Примечание- Мой предыдущий вопрос How to transfer data between controllers не мог получить мне любую помощь.
Редактировать
До сих пор я изменил в listeners-
mySharedService.passData = function (newData) {
$rootScope.$broadcast('dataPassed', newData)
}
$rootScope.$on('dataPassed', function (newData) {
mySharedService.values = newData;
})
Но до сих пор не может получить обновленный вид.
Где ваш '$ SCPE $ on'.? – Artless
@Artless, как его использовать? – Manoj
$ broadcast не будет непосредственно асинхронно просматривать данные ...вам нужно установить listner над вещательным событием, используя $ on, а затем вы можете получить широкоформатные данные внутри функции обратного вызова. И повторно присвойте данные снова, чтобы отразить это по сфере. –