私は作成したDjangoバックエンドからレコードをフェッチするために、AngularJSベースのフロントエンドをrestangularで使用しています。AngularJS/Restangularルーティング "未定義のプロパティ 'route'を設定できません。
私は次のようにクライアントリストのためのコールを作ってるんだ:
var app;
app = angular.module("myApp", ["restangular"]).config(function(RestangularProvider) {
RestangularProvider.setBaseUrl("http://172.16.91.149:8000/client/v1");
RestangularProvider.setResponseExtractor(function(response, operation) {
return response.objects;
});
return RestangularProvider.setRequestSuffix("/?callback=abc123");
});
angular.module("myApp").controller("MainCtrl", function($scope, Restangular) {
return $scope.client = Restangular.all("client").getList();
});
ChromeはHTTP 200を使用してデータを返すバックエンドを示している。
abc123({
"meta": {
"limit": 20,
"next": "/client/v1/client/?callback=abc123&limit=20&offset=20",
"offset": 0,
"previous": null,
"total_count": 2
},
"objects": [{
"id": 1,
"name": "Test",
"resource_uri": "/client/v1/client/1/"
}, {
"id": 2,
"name": "Test 2",
"resource_uri": "/client/v1/client/2/"
}]
})
しかし、それは私が「起こったらChromeのコンソールに次のスタックトレースが表示されます:
TypeError: Cannot set property 'route' of undefined
at restangularizeBase (http://172.16.91.149:9000/components/restangular/src/restangular.js:395:56)
at restangularizeCollection (http://172.16.91.149:9000/components/restangular/src/restangular.js:499:35)
at http://172.16.91.149:9000/components/restangular/src/restangular.js:556:44
at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:6846:59)
at http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:6883:26
at Object.Scope.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:8057:28)
at Object.Scope.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:7922:25)
at Object.Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:8143:24)
at done (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:9170:20)
at completeRequest (http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.js:9333:7) angular.js:5754
私はブレークポイントを実行しましたrestangular.js内の行395上:
L394 function restangularizeBase(parent, elem, route) {
L395 elem[config.restangularFields.route] = route;
それがブレークポイントelem
を打つ最初の時間は単なるオブジェクトであり、route
はclient
の値を持ちます。
2回目のブレークポイントに達するとelem
は未定義で、route
の値はclient
です。
elem
が2回目の周りに定義されない理由はありますか?
@ mark-lこれを答えにすることをお勧めします。ありがとう。 –