通过检查范围变量来过滤Angular.js

Dom*_*k H 3 javascript filter angularjs

我试图从符合某个标准的对象数组中获取某个对象.

对象的id应该等于scope范围变量$scope.lobbyid.我目前的方法不会将大厅对象传递给控制器​​.

selected lobby表示站点上活动选项卡的数据.所以容器数组只在站点加载时获取一次.

标记

<div ng-repeat="lobby in lobbies | filter:checkLobbyID(lobby)">
    [[lobby.name]]
</div>
Run Code Online (Sandbox Code Playgroud)

调节器

$scope.checkLobbyID = function($lobby) {
    return $lobby.lobbyid == $scope.lobbyid;
}
Run Code Online (Sandbox Code Playgroud)

排列

"lobbies": [
    {
        "isglobal": true,
        "lobbyid": 1,
        "name": "GLOBAL",
    },
    {
        "isglobal": false,
        "lobbyid": 2,
        "name": "stackoverflow rules",
    },
    {
        "isglobal": false,
        "lobbyid": 3,
        "name": "sdadadad",
    }
]
Run Code Online (Sandbox Code Playgroud)

临时解决方案是将以下代码添加到tab-switch事件.但这需要一个副本和另一个范围变量.如何用过滤器实现这一目标?

angular.forEach($scope.lobbies, function(lobby) {
    if (lobby.lobbyid == $scope.lobbyid)
    $scope.currLobby = angular.copy(lobby);
});
Run Code Online (Sandbox Code Playgroud)

kfi*_*fis 6

你不需要标记中的大厅参数.过滤器将隐式将其传递给scope-filter函数

<div ng-repeat="lobby in lobbies | filter:checkLobbyID">
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/vrwQG/

问候