代码之家  ›  专栏  ›  技术社区  ›  Green Computers

如何在angular 1中同时使用ng if和ng选项

  •  2
  • Green Computers  · 技术社区  · 8 年前

    (user.company==userData.company)

    <select ng-options="user.FirstName+' 'user.LastName for user in companyUsers | orderBy:'FirstName' track by user.Id" ng-if="user.company==userData.company" ng-model="selectedUser" ng-change="loadListNew()">
    </select>
    
    3 回复  |  直到 8 年前
        1
  •  1
  •   Louis Lecocq    8 年前

    使用 ng-if="user.company==userData.company" 不起作用,因为这将应用于select元素。

    过滤器选项

    ng-options 就像这样 example.

    筛选文档

    https://docs.angularjs.org/api/ng/filter/filter

        2
  •  0
  •   Jeffrey Roosendaal SReddy    8 年前

    您的代码中有一个错误: user.FirstName + ' ' + user.LastName +

    更新代码:

    <select ng-options="user.FirstName + ' ' + user.LastName for user in companyUsers | orderBy:'FirstName' track by user.Id" 
        ng-if="user.company==userData.company"
        ng-model="selectedUser"
        ng-change="loadListNew()">
    </select>
    

    ng-if 不适用于 ng-options 因为 ng选项 不会创建新范围。

    将跳过它。您可以在您的 orderBy -过滤器。

        3
  •  0
  •   alfishan aqeel    8 年前
        You may move your logic to controller rather than in html. You may filter data $scope.companyUsers before bind it to select options. 
    
        $scope.companyUsers =  // where you assign the value to companyUsers of scope variable. below this code do something like
        $scope.companyUsers = $scope.companyUsers.map( function(companyUserObj){
         if(companyUserObj.company==$scope.userData.company)
        {
           return companyUserObj;
        }
    
        })
    now bind this $scope.companyUsers to select options as below.
    <select ng-options="user.FirstName+' '+user.LastName for user in companyUsers | orderBy:'FirstName' track by user.Id" ng-model="selectedUser" ng-change="loadListNew()">
    </select>