我剛開始使用AngularJS,並且作爲一個項目,我決定構建一個管理書籤的簡單應用程序。我希望能夠維護書籤列表並添加/刪除項目。我使用Django和Django REST框架和Angular。AngularJS ng-repeat與控制器之間的通信
到目前爲止,我已經編寫了一個服務來抓取數據庫中的書籤,並且可以將它們從我的控制器打印到控制檯,但是ng-repeat似乎沒有看到它們。
這裏是我的服務代碼:
.factory('BookmarkService', ["$http", function ($http) {
var api_url = "/api/bookmarks/";
return {
list: function() {
return $http.get(api_url).then(function (response) {
return response.data
})
}
}
}]);
和一個控制器:
.controller("ListController",
["$scope", "BookmarkService", function ($scope, BookmarkService) {
$scope.bookmarks = BookmarkService.list();
console.log($scope.bookmarks);
}]);
而這裏的HTML:
<div ng-controller="ListController as listCtrl">
<md-card>
<md-card-content>
<h2>Bookmarks</h2>
<md-list>
<md-list-item ng-repeat="bookmark in listCtrl.bookmarks">
<md-item-content>
<div class="md-tile-content">
<p>{[{ bookmark.name }]} - {[{ bookmark.url }]}</p> // used interpolateProvider to allow "{[{" instead of "{{"
</div>
<md-divider ng-if="!$last"></md-divider>
</md-item-content>
</md-list-item>
</md-list>
</md-card-content>
</md-card>
</div>
當我打印從控制檯控制器我可以看到承諾對象,但ng-repeat不重複: image of promise object
我真的很感激,如果有人能幫我找到我的錯誤,並理解它爲什麼會發生。對於所有這些部件如何配合在一起,我仍然不是很滿意。
謝謝你的時間!
謝謝!這個答案解決了這個問題。 – eilidh
我以前曾經嘗試過。但是,還有另一個問題。當我使用「controller as」語法,即「listCtrl.bookmarks」時,書籤不會加載。他們只有沒有它。你知道爲什麼會這樣嗎? – eilidh
哦,我以前沒有注意到。當使用控制器作爲語法時,您需要將屬性附加到控制器實例而不是'$ scope'。在這種情況下,看起來像'.controller(「ListController」, [「BookmarkService」,function(BookmarkService){ this.bookmarks = BookmarkService.list(); console.log(this.bookmarks); }]] );'注意'this'而不是'$ scope' –