在Angular.js中通过检查作用域变量进行过滤

Filter in Angular.js by checking against a scope variable

本文关键字:变量 作用域 过滤 检查 Angular js      更新时间:2024-05-07

我正试图从对象数组中获得满足特定条件的特定对象。

对象的id应等于作用域变量$scope.lobbyid。我下面的当前方法不会将大厅对象传递到控制器中。

所选择的CCD_ 2表示站点上的活动选项卡的数据。因此容器数组在站点加载时只获取一次。

标记

<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开关事件中。但这需要一个副本和另一个作用域变量。如何使用过滤器实现这一点?

angular.forEach($scope.lobbies, function(lobby) {
    if (lobby.lobbyid == $scope.lobbyid)
    $scope.currLobby = angular.copy(lobby);
});

标记中不需要大厅参数。过滤器将隐含地将其传递给范围过滤器函数

<div ng-repeat="lobby in lobbies | filter:checkLobbyID">

http://jsfiddle.net/vrwQG/

关于