AngularJS:如何在每个循环上过滤对象

时间:2015-03-04 16:16:27

标签: javascript angularjs filter controller restangular

我正在使用AngularJs和Restangular构建应用程序以用于REST服务。

现在我有一个表单,我必须允许用户使用select从对象列表中添加多个对象。 但每次用户从select中选择一个对象时,我需要从列表中过滤掉该对象,以便进行下一次选择。

我已尝试创建对象数组的副本并删除我之前选择中添加的项目,但我无法访问控制器内的$ scope.purpose.purpose,仅在模板中

这是我的代码:

HTML:

<div class="form-group" ng-repeat="i in hardware.purposes track by $index">
   <form-label>Namjena: {{i}}</form-label>
   <div class="col-sm-8">
      <select class="form-control" placeholder=""
      ng-model="hardware.purposes[$index]" ng-required="true" >
          <option ng-repeat="item in purpose.purpose" value="{{item.id}}">{{item.name}}</option>
      </select>
   </div>
   <div class="col-sm-1">
     <button type="button" href="" ng-model="button" ng-click="addNewPurpose()" ng-disabled="addMoreDisabled"><span class="glyphicon glyphicon-plus"></span></button>
   </div>
 </div> 

控制器:

app.controller('AddHardwareCtrl',
function HardwareListCtrl($scope, PurposeService, $location, $route, $routeParams) {

    $scope.purpose = PurposeService.one().get().$object;

    $scope.hardware = {
        name: "",
        description: "",
        laboratory: "",
        organization: "",
        owner: "",
        purposes: [""],
        contact_person: "",
        purchase_value: "",
        acquisition_date: Date.now()
    };

    $scope.addNewPurpose = function() {
        $scope.hardware.purposes.push("");

        if($scope.hardware.purposes.length == $scope.purpose.purpose.length){
            $scope.addMoreDisabled = true;
        }
        else{
            $scope.addMoreDisabled = false;
        }
    };

});

有人可以帮帮我吗?在过去的5天里,我试图解决这个问题,这让我发疯了。

0 个答案:

没有答案