2015-06-11 43 views
0

我已經設置了json對象。如何從另一個JSON對象中查找值

  1. 語言
  2. 用戶詳細信息

用戶詳細信息有語言領域 - 其中有超過1倍的值。 這裏是我的示例JSON

$scope.languages = [ 
      {id: 1, text: 'English'}, 
      {id: 2, text: 'French'}, 
      {id: 3, text: 'Hindi'}, 
      {id: 4, text: 'Telugu'} 
      ]; 

    $scope.users = [{name: 'first user', status: 1,language:"1"}, 
        {name: 'second user', status: 2,language:"1,2"}, 
        {name: 'third user', status: 3,language:"1,3,4"}]; 

在我看來,我想列出的用戶名和語言。

<li ng-repeat="user in users">{{user.name}} - {{testString}}</li> 

我知道要做單一的價值。但是對於多重價值。我有邏輯,但我不知道如何實施。我在想這個。首先,我必須拆分用戶語言字符串並將其更改爲數組,然後查找語言ID的索引,然後返回語言文本。

我有從ID返回語言名稱的代碼。

var foundItem = $filter('filter')($scope.languages, { id: 3 }, true)[0]; 
var index = $scope.languages.indexOf(foundItem); 
$scope.result = $scope.languages[index].text; 

那麼現在的問題是如何打印用戶名旁邊的語言?

我試過這樣

$scope.testString = function() { 
    return "return test string"; 
} 

{{testString}} 

但它不工作。如果這個工作,我們可以傳遞langugae代碼作爲參數,我可以在testString函數內添加搜索代碼。

感謝

+0

首先的TestString是一個方法,那麼你應該叫{{的TestString()}} – Fals

+0

{{的TestString}}不是因爲testString是一個函數,所以你需要做{{testString()}}。關於你原來的問題,這是一個通用的JavaScript問題,而不是一個角度特定的問題。 –

回答

1

testString是一個函數,所以你不能使用它像{{testString}},你必須調用該函數{{testString()}}

可以簡化你這樣的代碼。

$scope.getLanguages = function (langs) { 
     var l = []; 
     angular.forEach(langs.split(','), function (lang) { 
     l.push(findLanguageTextById(parseInt(lang))); 
     }) 
     return l.join(', '); 
    }  
    function findLanguageTextById (langId) { 
     for(var i = 0;i<$scope.languages.length;i++) { 
     if ($scope.languages[i].id == langId) { 
      return $scope.languages[i].text; 
     } 
     } 
    } 

我爲您的問題創建了一個工作演示來看看。

http://plnkr.co/edit/Cdl8y58IExoVSZV6lp76?p=preview

+0

謝謝..它的工作原理..我在testString函數中實現搜索功能。請稍等幾分鐘,一旦完成,我會接受答案。 –

0

我想你是不是調用該函數,

$scope.testString = (function() { 
    return "return test string"; 
})(); 
相關問題