У меня есть мои данные фабрика ниже, которая возвращает обещаниеПроблемы с привязкой двухсторонней передачи данных между службой и контроллером
.factory('DataService', function($http, $document, CreatorService) {
promise = null;
jsonData = null;
return {
getJsonDataFromApi: function() {
promise = $http.get('/test');
return promise;
}
}
getJsonData: function() {
return jsonData;
},
setJsonData: function (data) {
jsonData = data;
}
}
Мой контроллер делает использование этой услуги следующим
.controller('MainCtrl', function ($scope, $http, $uibModal, DataService, StyleService, CreatorService) {
$scope.dataService = DataService;
$scope.dataService.getJsonDataFromApi().success(function (data) {
$scope.dataService.setJsonData(data['content']);
$scope.jsonData = $scope.dataService.getJsonData();
Как вы можете см., я пытаюсь связать $scope.jsonData
с данными службы jsonData
через $scope.jsonData = $scope.dataService.getJsonData();
, но это не работает.
Если я обновляю значение $scope.jsonData()
, значение, возвращаемое $scope.dataService.getJsonData()
, не изменяется.
Например, если я
$scope.jsonData = {};
console.log($scope.jsonData);
console.log($scope.dataService.getJsonData());
Выход
{}
Object{...}
Я бы ожидал, что они будут одинаковыми. Кажется, я не могу обновить объект службы, если я изменю объект области контроллера, и не могу получить объект моего объекта области управления для обновления, если я внес изменения в объект службы. Я хочу избежать использования часов.
Откуда вы вызываете функцию контроллера? – Ajay