我正在尝试将数组中的一个或多个值存储到作用域中。这是我的JSONP服务的结果,
angular.callbacks._7({
"id":157336,"results":[
{"id":"53db3c790e0a26189a000d09","iso_639_1":"en","key":"ePbKGoIGAXY","name":"Trailer 3","site":"YouTube","size":1080,"type":"Trailer"},
{"id":"550df44b9251413554004d43","iso_639_1":"en","key":"KlyknsTJk0w","name":"Own it today","site":"YouTube","size":720,"type":"Trailer"},
{"id":"533ec6fcc3a3685448009ccc","iso_639_1":"en","key":"nyc6RJEEe0U","name":"Teaser","site":"YouTube","size":720,"type":"Trailer"},
{"id":"5376ab510e0a26141c0005a8","iso_639_1":"en","key":"zSWdZVtXT7E","name":"Trailer","site":"YouTube","size":720,"type":"Trailer"},
{"id":"545da247c3a3685362005187","iso_639_1":"en","key":"Lm8p5rlrSkY","name":"Trailer 2","site":"YouTube","size":1080,"type":"Trailer"}
]
})
我正在尝试将所有key
值存储在名为$scope.youtubeTrailer
的范围内
但如果我这样做,
$scope.youtubeTrailer = response;
console.log ($scope.youtubeTrailer)
范围包含一个对象(电影),该对象内部是一个具有5个id的数组。那么这样的东西的正确选择器是什么?
如果我这样搜索,
console.log ($scope.youtubeTrailer.key)
我得到'未定义'
*编辑*
我试过下面的解决方案,
movieAdd.trailer(movie.id)
.then(function(response){
$scope.youtubeTrailer =[];
console.log ($scope.youtubeTrailer)
angular.forEach(response.results, function(item){
console.log ('Hello world')
if (item.hasOwnProperty('key')) {
$scope.youtubeTrailer.push(item.key);
}
});
console.log ($scope.youtubeTrailer)
表示范围为空。并且forEach
函数不会触发,因为Hello log
未在控制台中显示。如果我将$scope.youtubeTrailer =[];
更改为$scope.youtubeTrailer = response;
,我确实在范围内有对象,但forEach
仍未触发。
*编辑2 *
通过将response.results
改为response
,forEach
会触发。
*编辑3 *
我有点工作了。我在范围内获取数组,但是当我在创建函数中保存范围值时,它在数据库中显示为null。那是因为我试图保存一个数组。使用javascripts join
我将数组转换为可以保存的字符串。
movieAdd.trailer(movie.id)
.then(function(response){
$scope.youtubeTrailer = [];
angular.forEach(response, function(item){
if (item.hasOwnProperty('key')) {
$scope.youtubeTrailer.push(item.key);
var youtubeArray = $scope.youtubeTrailer
var youtubeString = youtubeArray.join();
答案 0 :(得分:3)
下面的代码基本上是循环遍历response.results
数组,其中包含5个对象。每个项目都分配给变量item
。检查item
属性为key
,如果为真,请将item.key
的值添加到$scope.youtubeTrailer
。
$scope.youtubeTrailer =[];
angular.forEach(response.results, function(item) {
if (item.hasOwnProperty('key')) {
$scope.youtubeTrailer.push(item.key);
}
});
以下是Angular ForEach的链接。
答案 1 :(得分:1)
$scope.youtubeTrailer
不仅仅是一个对象,它包含一个数组,它在key
字段所在的数组中。因此,您将需要使用阵列访问权限访问五个内部项目。例如$scope.youtubeTrailer.results[0].key