2016-02-13 60 views
0

我想在下面的方式來處理JSON數據:AngularJS JSON處理(像NG-重複)

$scope.activities = response.data; 
console.log($scope.activities.length); 
var list = []; 
for (var i = 0; i < $scope.activities.length; i++) { 
    console.log($scope.activities[i].name); 
    list.push($scope.activities[i].name); 
} 
var input = document.getElementById("myinput"); 
new Awesomplete(input, { 
    list: list 
}); 

不然怎麼可能太(另一種情況,但相同的原理):

<li ng-repeat="navItem in navItems" ng-click="itemClicked(item, $index)" ng-class="{'nav_list_item-current' : navItem.selected} " class="nav_list_item pure-u-md-1-{{navItemsCount}} pure-u-1-1"> 
    <a class="nav_list_item_link" href="{{navItem.link}}"> 
     {{navItem.name}} 
    </a> 
</li> 

其中navItems是JSON對象。

如何在角這是可能的,我的意思是它的工作,但沒有真正不錯

+0

你有什麼問題?你有錯誤嗎? – Thierry

+0

我認爲他想要使用Awfulplete與角度(例如ng-repeat)。他的約束並不是很乾淨,但我不確定我能爲他做些什麼,除了推薦UI引導和他們的下拉。 – VSO

回答

0

請注意,您可以將您的awesomecomplete代碼放在一個指令中,使其具有「乾淨的角度」,但這不是一件五分鐘的事情。這裏是你的數據庫調用數據分配簡化:

YourDatabaseCall().then(function(activitiesDataFromDb){ 
    //the _.pluck method gets you an array of activity names 
    $scope.activities = _.pluck(activitiesDataFromDb, 'name'); 

    var input = document.getElementById("myinput"); 
    new Awesomplete(input, { 
     list: list 
    }); 
}); 

http://underscorejs.org/#pluck,複製他們的勇氣助手的描述:

什麼是可能是最常見的用例爲 圖個方便版本:提取屬性值列表。而他們eexample:

var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}]; 
_.pluck(stooges, 'name'); 
=> ["moe", "larry", "curly"] 
+0

這是有點愚蠢的使用庫而不是簡單的Array.map –

+0

我不知道「愚蠢」,但我一般都認同你,雖然你會發現大多數開發者不知道。 – VSO

0

使用Array.prototype.map

var input = document.getElementById("myinput"); 

$scope.activities = response.data; 

var activityNames = $scope.activities.map(function(item){ 
    return item.name; 
}); 

new Awesomplete(input, { 
    list: activityNames 
}); 

,甚至更短的

var input = document.getElementById("myinput"); 

new Awesomplete(input, { 
    list: response.data.map(function(item){ 
     return item.name; 
    }) 
});