最近、Angular.js を少し試しています。この一環として、リクエストされたルートに応じてトリガーする ng-view とテンプレートを備えた非常に単純なコントローラーのセットを作成しました。Firebase から配列を取得するためだけに angularFireCollection を使用しています。これは、ng-viewの一部を形成しないthumbnailControllerで正常に機能します。
私の問題は、thumbnailController に流れるデータに加えて、データにアクセスできるようにするために他の 2 つのコントローラーも必要であることです。最初は、データを $rootScope の一部にするか、ng-view を、thumbnailController が設定されている div の子として設定するだけです。
ただし、その観点からの問題は、Firebase から実際に使用可能になる前に、各サブコントローラーがおそらくテンプレートにデータを設定しようとすることです。
ソリューションは、この質問angularFire route resolutionへの回答に従って解決を使用しているようです。ただし、以下のコードを使用して (また angularFireCollection を参照して)、angularFire が不明なプロバイダーであるというエラー メッセージが表示されます。私の理解では、以下のコードで十分なはずです。また、thumbnailController で angularFireCollection を使用すると、私が言うように正常に機能することも付け加えておきます。
.$inject を使用して angularFire/aFCollection をコントローラーに直接注入する実験も行いましたが、不明なプロバイダーと見なされるという点で同様の問題が発生しました。
可能であれば、ここで問題が何であるかについて誰かがアドバイスできますか?
var galleryModule = angular.module('galleryModule', ['firebase']);
galleryModule.config(['$routeProvider', 'angularFire', function($routeProvider, angularFire){
$routeProvider.
when('/', {
controller: initialController,
templateUrl: 'largeimagetemplate.html',
resolve: {images: angularFire('https://mbg.firebaseio.com/images')}
}).
when('/view/:id', {
controller: mainimageController,
templateUrl: 'largeimagetemplate.html',
resolve: {images: angularFire('https://mbg.firebaseio.com/images')}
}).
otherwise({
redirectTo: '/'
});
}]);
galleryModule.controller('thumbnailController', ['$scope', 'angularFireCollection', function($scope, angularFireCollection){
var url = 'https://mbg.firebaseio.com/images';
$scope.images = angularFireCollection(url);
}]);
function initialController($scope,images){
$scope.largeurl = images[0].largeurl;
}
function mainimageController($scope, images, $routeParams){
$scope.largeurl = images[$routeParams.id].largeurl;
}