AngularJS - 如何访问对象中的数组以在ng-bind中使用

时间:2017-10-09 13:28:23

标签: javascript angularjs arrays object angularjs-ng-repeat

我正在学习AngularJS,而我正试图插入一个“消毒过的”'标题到h2中的ng-repeat,但我无法弄清楚如何访问对象中数组中的数据。其他一切都很好,我只需要title'值。

HTML:

<div ng-repeat="question in questions" ng-show="!!questions.length" class="question-list">              
<h2><a ng-href="{{question.link}}" title="{{question.title}}" target="_blank" ng-bind-html="title"></a></h2>
</div>

这是JS:

var loadFeed = angular.module('loadFeed', ['ngSanitize']);

loadFeed.controller('feedController', ['$scope', '$http', function($scope, $http) {

    $scope.questions = [];    
    $http({
        method: 'GET',
        url: 'https://api.stackexchange.com/2.2/questions?pagesize=10&order=desc&sort=votes&tagged=angular&site=stackoverflow'
    }).then(function(feed) {

        console.log('success');
        console.log(feed);

        $scope.questions = feed.data.items;
        console.log($scope.questions);  

        $scope.title = $scope.questions.title; // This is what I need for the ng-bind


    },function(error) {
        console.log('error');
        console.log(error);
    }); 

}]);

这会返回一个单独的值(第一个项目的标题):

$scope.title = $scope.questions[0].title;

但是,我需要这个结果(它是空白的):

$scope.title = $scope.questions.title;

我尝试了angular.forEach和JS循环但是这只是重复了一个列表项中的每个标题。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:1)

如果您希望每个链接显示其相应问题的标题,请将ng-bind-html="title"更改为ng-bind-html="question.title"。您正处于ng-repeat中间,并且在该上下文中question是当前正在呈现的问题对象,因此question.title是该问题的标题。

我认为以上内容应该可以解决您的问题,但是如果您想要获取问题数组并生成一个只包含标题的新数组,则可以使用Array.map:

var titles = $scope.questions.map(function (question) {
    return question.title;
});

将遍历数组,从每个数组中取出标题,并生成一个只有标题的新数组。