Angularjs Musicbrainz使用ng repeat | JSON获取艺术家名称
我在这里有点新,我必须回到Angular去做一个小的应用项目 我必须得到一个艺术家列表,用MusicBrainz(音乐艺术家元数据)提供的JSON对象编写 例如,我通过下面的链接提出了一个请求Angularjs Musicbrainz使用ng repeat | JSON获取艺术家名称,angularjs,json,Angularjs,Json,我在这里有点新,我必须回到Angular去做一个小的应用项目 我必须得到一个艺术家列表,用MusicBrainz(音乐艺术家元数据)提供的JSON对象编写 例如,我通过下面的链接提出了一个请求 http://search.musicbrainz.org/ws/2/artist/?query=muse%20e*&fmt=json 返回一个JSON对象,其中包含带有“muse”标记的研究结果。但是我想在我的html中打印那些“艺术家”的名字 我用的是AngularJS 我在app.js中
http://search.musicbrainz.org/ws/2/artist/?query=muse%20e*&fmt=json
返回一个JSON对象,其中包含带有“muse”标记的研究结果。但是我想在我的html中打印那些“艺术家”的名字
我用的是AngularJS
我在app.js中编写了以下代码块:
.controller('artisteCtrl', function($http, $scope){
$scope.listenoms = [];
$http.get('http://search.musicbrainz.org/ws/2/artist/?query=muse%20e*&fmt=json')
.success(function(data){
$scope.listenoms = data;
console.log($scope.listenoms);
})
})
然后,我的HTML ng repeat看起来像:
<ul>
<li ng-repeat="name in listenoms">
{{data['artist-list'].artist[0].area}}
</li>
</ul>
-
{{data['artist-list'].artist[0].area}
什么都没用。它获取对象并在控制台中显示,但我无法访问子对象
谢谢你们的帮助,伙计们 $http响应不是一个数据对象,而是一个响应对象(请参阅),由以下属性组成:
data – {string|Object} – The response body transformed with the transform functions.
status – {number} – HTTP status code of the response.
headers – {function([headerName])} – Header getter function.
config – {Object} – The configuration object that was used to generate the request.
statusText – {string} – HTTP status text of the response.
只需将response.data对象分配给范围属性:
$scope.listenoms = data.data;
或者,为了遵循更好的约定,将数据重命名为“response”,并使用.then()
而不是.success()
,因为.success()
现在被认为是不推荐的:
$http.get('http://search.musicbrainz.org/ws/2/artist/?query=muse%20e*&fmt=json')
.then(function(response){
$scope.listenoms = response.data;
console.log($scope.listenoms);
}
)
最后,您在模板中使用的有效负载中的对象结构不正确。它应该如下所示:
<ul>
<li ng-repeat="artist in listenoms['artist-list'].artist">
{{artist.area}}
</li>
</ul>
-
{{艺术家区域}
另外,他应该使用.then()
而不是.success()
好的,谢谢你们的回答,伙计们,app.js方面更干净,但是对于显示部分,我怎么处理名字中有破折号的孩子呢?比如:“艺术家列表”@MaximeBissonnier我已经更新了我的答案来处理从该端点返回的数据结构。非常感谢@DavidL!你帮了我很多,我希望我不会陷入其他问题。。。我今晚必须处理这个应用程序并完成它。@MaximeBissonnier很乐意帮忙!您没有使用name
变量,该变量列在您的ng repeat
块中。我回答了您的问题,您应该将我的答案标记为答案,然后创建一个新问题,否则它会变得过于宽泛,对将来的其他人没有用处。@DavidL哦,好的,很好!谢谢你的建议,我是新来的,很好!没问题:)。只是想给你指出正确的方向!