2016-04-14 20 views
0

我是Angular的新手,我試圖設置DATA(script.js文件)varible從JSON文件(books.json)獲取數據。我回顧了幾個帖子,但我無法理解它如何應用於工廠類結構。JSON作爲Angular工廠中的變量

謝謝! Plunker-Code

+0

你可以做兩件事情: 1.在您的路線,添加一個決心調用getBooks功能爲您服務,並在$ http回調中,將您的響應分配給service.data對象。 2.您可以在控制器中調用getBooks函數,並在回調中將書籍分配給控制器對象。無論哪種方式,你的service.getBooks函數應該使用$ http.get('books.json'); – Rob

+0

到目前爲止,我瞭解如何將它應用於模塊上,https://embed.plnkr.co/vuMzAxtDhJ7ZnYls32rO/但不在控制器上 – user3387719

+0

@ user3387719您的鏈接器不工作 – Hoyen

回答

0

$http.get返回承諾。退回工廠的承諾,然後使用then在控制器中解決此問題。

在你的工廠

app.factory("bookService", ["$rootScope","$http", 
function($rootScope,$http,$q) { 
    var getBooks = function(){ 
     return $http.get('books.json'); // returns a promise 
    } 

    return { 
    getBooks: getBooks 
    }; 

}]); 

而且在你控制器

app.controller("listController", ["$scope", "$location", "$routeParams", "bookService", 
    function($scope, $location, $routeParams, bookService) { 

    bookService.getBooks().then(function(data){ // resolve promise using then() 
     // successcallback 
     $scope.books = data; 
    }); 
    } 
]); 
+0

sjokkogutten - 感謝您的時間,不幸的是,我仍然無法獲得Json文件,我按照您的指示做了,但我得到的錯誤是SVC變量無法訪問,到期到[Return {getBooks:getBooks};]。這是我迄今爲止的進展。 https://embed.plnkr.co/vuMzAxtDhJ7ZnYls32rO/ – user3387719

+0

我沒有權限保存你的Plunk,但你需要1)在你的工廠里加入這個return語句'return { getBooks:getBooks };'2)include這在你的控制器中:'$ scope.books = data;'3)在你的html上調用'books' – sjokkogutten

+0

Hi-sorry for delay,這是我的代碼,編輯權限https://embed.plnkr.co/sioHkk/ – user3387719