Я пытаюсь заставить свое приложение собирать данные перед изменением маршрута, как показано на многих видео от Джона Линдквиста: http://www.youtube.com/watch?v=P6KITGRQujQ&list=UUKW92i7iQFuNILqQOUOCrFw&index=4&feature=plcp
У меня все подключено, но когда это время для отложенного объекта для решения, я получаю сообщение об ошибке:
Error: Argument 'fn' is not a function, got Object
at assertArg (http://localhost:9000/components/angular/angular.js:1019:11)
at assertArgFn (http://localhost:9000/components/angular/angular.js:1029:3)
at annotate (http://localhost:9000/components/angular/angular.js:2350:5)
at invoke (http://localhost:9000/components/angular/angular.js:2833:21)
at Object.instantiate (http://localhost:9000/components/angular/angular.js:2874:23)
at http://localhost:9000/components/angular/angular.js:4759:24
at <error: illegal access>
at Object.Scope.$broadcast (http://localhost:9000/components/angular/angular.js:8261:28)
at http://localhost:9000/components/angular/angular.js:7417:26
at wrappedCallback (http://localhost:9000/components/angular/angular.js:6797:59) angular.js:5704
Мой код выглядит следующим образом:
Маршрут -
angular.module( 'saApp' )
.config( function ( $routeProvider, $locationProvider ) {
$routeProvider
.when( '/dashboard', {
templateUrl: 'views/dashboard/dashboard.html',
controller: Dashboard,
resolve: Dashboard.resolve
}
});
-
var Dashboard = angular.module( 'saApp' ).controller(
function ( $scope, dataset ) {
$scope.data = dataset;
} );
Dashboard.resolve = {
dataset: function ( $q, DBFactory ) {
console.log("dataset enter")
var deferred = $q.defer();
DBFactory.get( {noun: "dashboard"},
function ( data ) {
console.log("resolving");
deferred.resolve( data );
} );
console.log("promise");
return deferred.promise;
}
}
При запуске он выполняет это решение, возвращается ресурс DBFactory, и все работает до фактического "отложенного" (данные); где я получаю ошибку, вставленную выше. Если я прокомментирую, что одна строка, конечно, я не получаю ни одной страницы, но я также не получаю ошибки.
Содержимое данных, возвращаемое из DBFactory, представляет собой объект JSON, который является тем, что ожидается, и показан во всех примерах, которые я видел в Интернете и видео.
с помощью:
AngularJS 1.0.6
Мысли? Спасибо за вашу помощь.
UPDATE:
Кажется, что я использовал свои маршруты и определял контроллер с пространством имен:
var Dashboard = angular.module( 'saApp' ).controller()
был виноват в этом. Когда я просто использую объявление стандартной функции:
function DashboardCtrl($scope, dataset) {
$scope.data = dataset;
}
он удовлетворяет ошибке "поиск функции, полученного объекта". Странным было то, что я изменил его использование в качестве объекта "var DashboardCtrl = angular.module(" saApp "). Controller()" или даже то, что у меня было до этого от генератора йома, и указано в angularjs docs:
angular.module( 'saApp' )
.controller( 'DashboardCtrl', function ( $scope, dataset ) {});
с маршрутом:
.when( '/dashboard', {
templateUrl: 'views/dashboard/dashboard.html',
controller: 'DashboardCtrl'
} )
не будет работать.