angularJS在控制器中分配变量

时间:2013-10-29 12:40:35

标签: angularjs

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']];

3 个答案:

答案 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解决这个问题,但不到一周的时间我就无法找到解决方案。