ich meine Daten Fabrik unten haben, die ein Versprechen gibtProbleme mit Zwei-Wege-Datenbindung zwischen Service und Controller
.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;
}
}
Mein Controller Nutzung dieses Dienstes macht als
.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();
Wie folgt können Sie Ich versuche, $scope.jsonData
an den Datendienst jsonData
Objekt über $scope.jsonData = $scope.dataService.getJsonData();
zu binden, aber das scheint nicht zu funktionieren. Wenn ich den Wert von $scope.jsonData()
aktualisiere, ändert sich der Wert, der von $scope.dataService.getJsonData()
zurückgegeben wird, nicht.
Zum Beispiel, wenn ich
$scope.jsonData = {};
console.log($scope.jsonData);
console.log($scope.dataService.getJsonData());
Der Ausgang ist
{}
Object{...}
ich sie gleich sein erwartet hätte. Ich kann nicht scheinen, mein Service-Objekt zu aktualisieren, wenn ich mein Controller-Bereichsobjekt ändere, noch kann ich mein Controller-Bereichsobjekt aktualisieren, wenn ich das Dienstobjekt ändere. Ich möchte vermeiden, Uhren zu benutzen.
Von wo Sie Controller-Funktion aufrufen? – Ajay