2016-02-01 41 views
1

我有一個控制器,它看起來像這樣:角:無法找到一個數組的索引

MyControllers.controller('ContentCtrl', ['$scope', '$http', '$routeParams', function($scope, $http, $routeParams) { 

    $http.get('js/data.json').success(function(data){ 
     $scope.meta = data; 
     $scope.whichItem = $routeParams.itemName; 

     console.log($scope.whichItem); 
    }).error(function() { 
     alert('Unable to get back informations :-('); 
    }); 

    $scope.title1 = [{"title":"Redhat Theme Guide"}]; 
    $scope.title2 = [{"title":"Debian Theme Guide"}]; 
}]); 

而且JSON數組:

[ 
    { 
    "category":"category1", 
    "link":"category1", 
    "expand":false, 
    "keyword":"category1, category1 online, category1 something" 
    }, 
    { 
    "category":"category2", 
    "link":"category2", 
    "expand":false, 
    "keyword":"category2, category2 online, category2 something" 
    } 
] 

而且我不能從那個數據數組與{{meta[whichItem].keyword}}因爲whichItem變量不代表數組的索引。它始終是一個字符串,但它應該是整數:在本例中爲01。我試過parseInt()slice()但沒有成功。

+0

一旦您收到數據,JSON就會被解析到一個對象數組中。所以你的問題與JSON無關。 'whichItem'的值究竟是什麼。 –

+0

控制檯日誌表明這些值是:** category1 **和** category2 **取決於我的網址...我需要他們是** 0 **和** 1 ** –

+0

我想要什麼做的是搜索數組,如果我發現類別的值匹配my ** $ scope.whichItem **,然後使用該索引中的對象**關鍵字** ... –

回答

0

我認爲最簡潔的解決方案是編寫一個簡單的函數,通過搜索指定的類別從數組中獲取項目。 我使用了很多非常有用的lo-dash,所以這裏有一個使用該庫的例子。

JS:

$scope.getMetaDataByCategory = function(categoryId){ 
    return _.find($scope.meta, {category: categoryId}); 
}; 

HTML:

{{getMetaDataByCategory(whichItem).keyword}} 

您可以用常規的for循環就此別過,但它更多的代碼。

+0

看,這正是我想要的,它應該工作,因爲在Angular的網頁上有一個例子:[https://docs.angularjs.org/tutorial/step_07] –

相關問題