В настоящее время я работаю над некоторым кодом в Angular, который загружает список блог-страниц на веб-сайт. У меня есть модуль и контроллер, и у меня есть цикл ng-repeat, предназначенный для итерации через json, который действует как индекс для набора html-файлов. Однако теги, которые должны выводить данные из моего индексного объекта, на последней странице пустые.Контроллер AngularJS не отображает данные из массива
app.js:
var PersonalApp = angular.module('PersonalApp', [
'ngRoute',
'MasterCtrl'
]);
PersonalApp.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/blog', {
templateUrl: 'partials/blog.html',
MasterCtrl: 'MasterCtrl'
}).
when('/about', {
templateUrl: 'partials/about.html',
MasterCtrl: 'MasterCtrl'
}).
when('/projects', {
templateUrl: 'partials/about.html',
MasterCtrl: 'MasterCtrl'
}).
when('/contact', {
templateUrl: 'partials/about.html',
MasterCtrl: 'MasterCtrl'
}).
otherwise({
redirectTo: '/blog'
});
}]);
MasterCtrl.js:
var MasterCtrl = angular.module('MasterCtrl', []);
MasterCtrl.controller('MasterCtrl', ['$scope', '$http',
function ($scope) {
$.ajax({
url: '../BlogPosts/posts.json',
dataType: 'json',
success: function (bposts) {
$scope.bposts = (bposts);
bposts = JSON.stringify(bposts)
console.log(bposts);
}
});
}]);
blog.html:
<article ng-repeat="posts in bposts" class="post-173 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized masonry-brick" style="position: absolute; left: 0px; top: 0px;">
<div class="item-sizer">
<header class="entry-header blog-entry-header">
<div class="entry-data">
<span class="posted-on">
<a ng-href="/../BlogPosts/{{posts.ID}}" rel="bookmark">
<time class="entry-date published updated" datetime="2015-08-20T02:48:02+00:00">{{posts.ID}}</time>
</a>
</span>
</div>
<h1 class="entry-title"><a ng-href="/../BlogPosts/{{posts.ID}}" rel="bookmark">{{posts.Title}}</a></h1> </header><!-- .entry-header -->
{[posts.ID}}
<div class="entry-content">
<p>{{posts.Summary}}<a class="read-more" ng-href="/../BlogPosts/{{posts.ID}}">Continue reading</a></p>
</div><!-- .entry-content -->
</div>
</article>
Вот консольный вывод из моего первоначально JQuery:
{"posts":[{
"ID":"441770384",
"Title":"TestPost",
"Summary":"Doot Doot",
"Thumb":"null"
},{
"ID":"1441835958",
"Title":null,
"Summary":"null",
"Thumb":"null"
},{
"ID":"1441836000",
"Title":null,
"Summary":"null",
"Thumb":"null"
},{
"ID":"1441836039",
"Title":"dfasdf",
"Summary":"null",
"Thumb":"null"
}]}
используйте '$ http' вместо' $ .ajax', поэтому вам не нужно использовать '$ apply()' для каждого запроса. Angular не знает о '$ .ajax', поэтому вам нужно сказать, чтобы он запускал дайджесты, когда вы меняете область видимости. – charlietfl
Поздравляем с разделом вашего приложения в модулях, это редкий сайт на StackOverflow. Вам будет намного легче работать с – Phil