Tôi đang cố gắng để làm cho ứng dụng của tôi thu thập các dữ liệu trước khi thay đổi tuyến đường, như thể hiện trên nhiều video từ John Lindquist: http://www.youtube.com/watch?v=P6KITGRQujQ&list=UUKW92i7iQFuNILqQOUOCrFw&index=4&feature=plcpAngularJS hoãn lỗi: Đối số 'fn' không phải là một chức năng, có Object
tôi đều nó nối, nhưng khi đó là thời gian cho đối tượng thu nhập hoãn lại để giải quyết, tôi nhận được lỗi:
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
mã của tôi trông như thế này:
Route -
angular.module('saApp')
.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when('/dashboard', {
templateUrl: 'views/dashboard/dashboard.html',
controller: Dashboard,
resolve: Dashboard.resolve
}
});
điều khiển -
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;
}
}
On chạy, nó thực hiện quyết tâm, tài nguyên DBFactory đi, trở lại và mọi thứ hoạt động cho đến khi thực tế "deferred.resolve (dữ liệu);" đó là nơi mà sau đó tôi nhận được lỗi dán ở trên. Nếu tôi bình luận rằng một dòng ra, tất nhiên tôi không có trang, nhưng tôi cũng không nhận được lỗi.
Nội dung của dữ liệu, quay lại từ DBFactory là một đối tượng JSON, đó là những gì được mong đợi và được hiển thị trong tất cả các ví dụ tôi đã xem trực tuyến và video.
sử dụng:
AngularJS 1.0.6
Suy nghĩ? Cảm ơn tất cả sự giúp đỡ của bạn.
UPDATE:
Có vẻ như con đường tôi đã sử dụng các tuyến đường của tôi và xác định bộ điều khiển với không gian tên:
var Dashboard = angular.module('saApp').controller()
là để đổ lỗi cho việc này. Khi tôi chỉ cần sử dụng khai báo hàm chuẩn:
function DashboardCtrl($scope, dataset) {
$scope.data = dataset;
}
đáp ứng lỗi "tìm kiếm hàm, nhận đối tượng". Điều kỳ lạ là tôi đã thay đổi để sử dụng nó như là một đối tượng "var DashboardCtrl = angular.module ('saApp'). Controller()" hoặc thậm chí những gì tôi đã có nó trước đó từ máy phát điện yeoman, và quy định trong tài liệu angularjs của:
angular.module('saApp')
.controller('DashboardCtrl', function ($scope, dataset) {});
với một đường:
.when('/dashboard', {
templateUrl: 'views/dashboard/dashboard.html',
controller: 'DashboardCtrl'
})
sẽ không hoạt động.
bạn đã thử sử dụng góc 1.0.5 –
chỉ cần cho nó một đi, cùng một lỗi –
Tôi đang bị mắc kẹt về điều này quá! Tôi muốn tham khảo một phương pháp điều khiển trong thuộc tính route.resolve trong đối số thứ 2 của $ routeProvider.when(). Làm thế nào tôi có thể làm khi sử dụng mô-đun kiểu định nghĩa bộ điều khiển? (cũng sử dụng yeoman) Tôi bị mắc kẹt! – deck