0
 var testApp = angular.module('testApp', ['firebase'])
 .config(['$routeProvider','$locationProvider',function
     ($routeProvider,$locationProvider)
 {

 $routeProvider
  .when('/', {
    templateUrl: '/views/main.html',
    controller: 'MainCtrl'
  })
 .when('/test', {
    templateUrl: '/views/test.html',
    controller: testCrtl,
    resolve:
    {
        firedata: function($q,angularFire){
        var deffered = $q.defer();

        var ref = new Firebase('https://shadowfax.firebaseio.com/items');
        ref.on('value', function(result){
            deffered.resolve(result.val());
        });

        return deffered.promise;
        }

    }
  })
  .otherwise({
    redirectTo: '/'
  });
  // $locationProvider.html5Mode( true );
  }]);


angular.module('testApp')
.controller('MainCtrl', ['$scope','$routeParams','$rootScope', function ($scope,$routeParams,$rootScope) {

    $scope.load = function(){ return false;}
    $rootScope.$on('$routeChangeStart', function(next, current) { 
    $scope.load = function(){ return true;}

    });


}]);

 testApp.controller('TestCtrl',['$scope','$timeout','Fire','firedata','testCrtl']);

 var testCrtl = function ($scope,$timeout,Fire,firedata) {

            $scope.items=firedata;

 };

上記のコードで、値が$scope.items=firedata;null なのはなぜですか? コントローラーのデータをプリロードするために、Google のようなルート変更を実行する方法を説明してください。この例は、John Lindquist が説明するように機能しますが、Firebase のネイティブ JS ライブラリを使用すると、データをプリロードできません。

また、Firebase angularFire ライブラリを使用しても役に立ちません。これは $scope をパラメーターとして使用し、解決関数に $scope を渡すことができないためです。

4

1 に答える 1