2016-04-14 15 views
0

Angular'e yeni gelen biriyim ve ben JSON dosyasından (books.json) veri almak için DATA (script.js dosyası) değişkenini ayarlamaya çalışıyorum. Birkaç gönderiyi inceledim ama bir fabrika yapısında nasıl uygulanabileceğini anlayamadım.JSON Angular fabrikasında değişken olarak

Teşekkürler Ahead!

+0

Sen birkaç şey yapabilirsiniz kontrolör ve $ http geri çağrıda, cevabınızı service.data nesnesine atayın. 2. Kontrol ünitenizdeki getBooks işlevini çağırabilir ve geri aranızda kitapları denetleyici nesnesine atayabilirsiniz. Her iki durumda da service.getBooks işleviniz $ http.get ('books.json'); – Rob

+0

Şimdiye kadar, modül üzerinde nasıl uygulanacağını anladım, https://embed.plnkr.co/vuMzAxtDhJ7ZnYls32rO/ ama kontrolörde değil – user3387719

+0

@ user3387719 Sizin plunker bağlantılarınız çalışmıyor – Hoyen

cevap

0

$http.get bir söz verir. Sözünü fabrikadan iade edin ve ardından then kullanarak kontrol ünitesinde çözün. Rotanızla olarak 1. hizmetinde getBooks işlevi çağırmak için bir kararlılık ekleyin:

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

    return { 
    getBooks: getBooks 
    }; 

}]); 

Ve daki fabrikasında

Eğer

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 - Zaman ayırdığınız için teşekkürler, maalesef Json dosyasını alamıyorum, bana talimat verirken yaptım, SVC değişkeninin ulaşılamaması nedeniyle bir hata oluştu [Return {getBooks: getBooks};] sayfasına gidin. işte benim ilerlemem burası. https://embed.plnkr.co/vuMzAxtDhJ7ZnYls32rO/ – user3387719

+0

Size kaydetme iznim yok Plunk, ancak yapmanız gereken 1) bu dönüş ifadesini fabrikanıza ekleyin return dönüş { getBooks: getBooks }; '2) dahil Bu sizin denetleyicide: '$ scope.books = data;' 3) html – sjokkogutten

+0

'unuzda 'books' ı arayın. Merhaba - gecikme için özür dilerim, kodum https://embed.plnkr.co/sioHkk/ – user3387719