AngularJS新手还不太了解所有的术语,所以请和我一起出去:)
我有一个控制器引入json文件的内容:
function phoneListController($scope, $http) {
$http.get('phones.json').success(function(data) {
$scope.phones = data.offers_basic_data;
$scope.features = data.equipmentSearchFeatures;
}).error(function(data, status, headers, config) {
console.log('error');
});
}
这很好用,但是我需要使用手机范围中的一个项目(产品ID)来获取第二个范围内的正确功能。我是否放置了类似的内容:
var productid = phones.1.productid;
在功能范围内?在页面上?我正在使用“ng-data-repeat”列出手机,我会以某种方式将变量放在重复内吗?我尝试了多种方法将产品ID {{phone.1.ProductID}}插入到功能范围:{{features.productID.0}}但我在那里做的任何事情似乎都无效。有什么想法/建议吗?
如果我使用的是不正确的术语,请纠正我,我一直在使用angularJS不到一周!
我试图在函数中分配一个变量,但它不起作用:
var productid = phones[1]['productID'];
以下是我在HTML中调用它的方式:
Test: {{features.productid.0}}
<小时/> 好吧,我真的很亲密,我知道我错过了一些非常愚蠢的东西:
$scope.phones = data.offers_basic_data;
console.log(JSON.stringify(phones));
var productid = $scope.phones[1]['ProductID'];
$scope.features = data.equipmentSearchFeatures['Features'][productid];
以上不起作用,但手机再次列在页面上而不是白色。我觉得我没有将变量正确地合并到数组中。
这是第二个数组的镜头:
[equipmentSearchFeatures] => Array
(
[Features] => Array
(
[12312] => Array
(
[0] => Test - no
接下来尝试使用此行,仍显示手机,但不显示测试功能:
$scope.features = data.equipmentSearchFeatures['Features'][$scope.phones[1]['ProductID']];
答案 0 :(得分:0)
根据您的编辑,并假设属性名称为ProductID:
var productid = $scope.phones[1].ProductID;
修改强>
好的,我想我明白了 - data.equipmentSearchFeatures
有一个名为Features的属性是一个数组,并且数组的成员有一个名为productId的属性,你想要找到一个与你的变量productId匹配的属性?
你需要一个循环。这不是语法检查,但应该关闭:
var productid = $scope.phones[1].ProductID; //get the product id
//loop over the Features collection until you match the productId
angular.forEach(data.equipmentSearchFeatures.Features, function(feature){
if (feature.productId == productId){
//now set the scope variable to the matching item
$scope.features = feature;
}
};
答案 1 :(得分:0)
@cfox:试试这个:
console.log(JSON.stringify(phones));
看看你是否在找正确的元素!
但我认为你想做
var productid = $scope.phones[1].ProductID;
,而不是!
答案 2 :(得分:0)
通过重新格式化重新格式化json文件解决了直接在产品下移动功能而不是单独的数组。我确信有一种方法可以使用AngularJS解决这个问题,但不到一周的时间我就无法找到解决方案。