【发布时间】:2013-12-24 11:36:39
【问题描述】:
我正在尝试从满足特定条件的对象数组中获取特定对象。
对象的 id 应该等于作用域变量$scope.lobbyid。我下面的当前方法不会将大厅对象传递给控制器。
选中的lobby代表网站上活动标签的数据。所以容器数组只在站点加载时获取一次。
标记
<div ng-repeat="lobby in lobbies | filter:checkLobbyID(lobby)">
[[lobby.name]]
</div>
控制器
$scope.checkLobbyID = function($lobby) {
return $lobby.lobbyid == $scope.lobbyid;
}
数组
"lobbies": [
{
"isglobal": true,
"lobbyid": 1,
"name": "GLOBAL",
},
{
"isglobal": false,
"lobbyid": 2,
"name": "stackoverflow rules",
},
{
"isglobal": false,
"lobbyid": 3,
"name": "sdadadad",
}
]
临时解决方案是将以下代码添加到 tab-switch 事件中。但这需要一个副本和另一个范围变量。如何通过过滤器实现这一点?
angular.forEach($scope.lobbies, function(lobby) {
if (lobby.lobbyid == $scope.lobbyid)
$scope.currLobby = angular.copy(lobby);
});
【问题讨论】:
-
如果你想获取单个对象,为什么要使用
ng-repeat? -
范围值经常变化,我希望标记自动获取具有正确 ID 的对象。我猜你想在更新数组时将对象的另一个副本创建到另一个范围变量中?
-
Angular 双向绑定经常实时工作,不是吗?
-
我编辑了我的帖子。我需要根据当前选择的 id 来浏览大厅数组,该 id 存储在 $scope.lobbyid
-
请在 plunker 中创建一个演示,概述您要完成的工作
标签: javascript angularjs filter