2014-11-05 62 views
1

有人可以創建一個示例,說明如何使用工廠或使用AJAX的服務從控制器的外部設置$ scope變量?

每當我嘗試過AJAX變量返回undefined,因爲請求還沒有返回,所以$scope.var是未定義的。在AJAX請求返回後,即使我從Controller調用服務,$scope.var仍未定義。請幫忙。

+0

你能告訴我們到目前爲止你已經嘗試了什麼?可能的重複http://stackoverflow.com/questions/22898927/injecting-scope-in​​to-an-angular-service-function – lexith 2014-11-05 18:51:45

+0

這裏是你的一個例子:http://stackoverflow.com/a/26657303/949476。服務方法'userService.getUsers'返回promise。然後在控制器中做這樣的事情:'userService.getUsers()。then(function(users){$ scope.users = users;});' – dfsq 2014-11-05 18:54:23

回答

1

請看演示這裏http://plnkr.co/edit/JcRY8uHRYaHH33UTH7Bt?p=preview

var app = angular.module("myapp", []); 

app.service("dataService", function($http, $q) { 

    var data = []; 

    function getData() { 

    var deffered = $q.defer(); 
    var request = { 
     url: 'data.json', 
     method: 'GET' 
    }; 
    $http(request).then(sucess, error); 

    function sucess(response) { 
     deffered.resolve(response.data); 
    } 
    function error() { 
     deffered.reject(); 
    } 

    return deffered.promise; 

    } 


    return { 
    data: data, 
    getData: getData 
    } 

}) 
app.controller('MyControl', function($scope, dataService) { 

    $scope.data = []; 
    dataService.getData().then(function(response) { 

    $scope.data = response; 
    }) 
}); 
+0

感謝您花時間寫出所有代碼招。 – user3704920 2014-11-17 20:38:09