[英]Get unique item from scope array
我的$ scope.users中有一個帶有JSON對象的數組,它可以正常工作。 我現在正嘗試通過過濾用戶列表以獲取單個用戶來為單個用戶設置“詳細”頁面。
我已經關閉了很長時間,由於某種原因,我找不到文檔或任何有關如何做自己的事的示例。 也許這不是在Angular中執行此操作的正確方法,並且/或者我沒有在尋找正確的東西?
我嘗試從控制器的列表中獲取基於userId的對象,並嘗試在狀態中傳遞解析,但沒有任何一種方法可以工作。 獲得ID為$ stateparams.userId的單個用戶的最佳方法是什么?
其他所有東西都正常工作(即所有路由,使用戶進入#/ users)。
// routing section of app.js
// Routing
$urlRouterProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
templateUrl: 'static/partials/main/home.html'
})
.state('users', {
url: '/users',
templateUrl: 'static/partials/accounts/users.html',
controller: 'UserController'
})
.state('profile', {
url: '/users/{userId}',
templateUrl: 'static/partials/accounts/profile.html',
controller: 'UserController'
});
// controller.js
var rlGlobalControllers = angular.module('rlGlobalApp.controllers', []);
rlGlobalControllers.controller('UserController', function($scope, $stateParams, $filter) {
var userId = $stateParams.userId;
$scope.users = [
{
'id': 1,
'name': 'Shadrack'
},
{
'id': 2,
'name': 'JP'
},
{
'id': 3,
'name': 'Adam'
}
];
// $scope.user = ???
});
# profile.html
<div ng-include src="'/static/partials/shared/header.html'"></div>
<div class="container">
<div class="row">
<p>users data: {{ users }}</p>
<p>user data: {{ user }}</p>
</div>
</div>
用戶Array.prototype.filter
方法可查找滿足條件的對象:
$scope.user = $scope.users.filter(function(user) {
return user.id === userId;
})[0];
這是最自然的解決方法。 但是,如果您的users
數組非常大(例如,數百萬(希望不是)),那么juunas的for-loop-break解決方案被認為更有效。
您可以在控制器中執行以下操作:
for(var i = 0; i < $scope.users.length; i++){
if($scope.users[i].id === userId){
$scope.user = $scope.users[i];
break;
}
}
var output = [],
keys = [];
Array_Value.forEach(function (item) {
var key = item["Field name"];
if (keys.indexOf(key) === -1) {
keys.push(key);
output.push(item);
}
});
this.Title = output;
提供您的數據,而不是Array_value和字段名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.