ng-click显示ng-repeat上的所有隐藏文本字段,而不是Angular中的一个

时间:2015-01-09 07:05:54

标签: angularjs angularjs-scope angularjs-ng-repeat

我开始使用Angular,实施非常好,我在ng-click

处理了一个问题

我正在动态获取数据并显示ng-repeat,我想在铅笔点击时更新数据,因为我正在使用input text element,但是当我点击铅笔它时打开所有text fields

这是我的HTML代码

<

div ng-repeat="item in scroller.items track by $index">
       <div class="secHead text-center">
         <button class="common btnDarkGrey" data-ng-hide="hideCatButton">{{item.category_name}}</button>
         <input type="text" id="focus-{{$index}}" class="common btnDarkGrey editDashboardCategory" name="editCategory" value="" data-ng-model="item.category_name" data-ng-show="hideField">
     <span  data-ng-click="updateCategory(item.category_id,item.category_name,$index)"   class="chkOneDone" data-ng-show="hideOkButton">Done</span>
       <div class="pull-right">
           <a href="#" class="pen" data-ng-click="updatePen($index)"></a>
     </div>
    </div>
     </div> 

在这里我Angular code

   $scope.updateCategory=function(category_id,updated_cat_name, $index){
        Category.updateCat($rootScope,$scope,$index,$http,$timeout,updated_cat_name,old_cat_name,category_id);
    };
$scope.updatePen=function($index){
        old_cat_name=$scope.scroller.items[$index].category_name
        $scope.hideField=true;
        $rootScope.hideOkButton=true;
        $rootScope.hideCatButton=true;

};

我创建了一个Category service来执行update

之类的任务

我还没有得到任何合适的解决方案。

有人能帮助我吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您只想隐藏/显示列表中的某个元素,则需要以某种方式指定它。现在你有三个rootScope布尔值:     $scope.hideField=true; $rootScope.hideOkButton=true; $rootScope.hideCatButton=true;  正在为整个列表设置,您需要在列表中的每个人上设置显示属性。

在您的控制器功能中,您可以在预期点击之前执行以下操作:

//normal for loop so that you have the index
for(var i=0; i < $scope.scroller.items.length; i++){
  $scope.scroller.items[i].show = false;
}

然后你可以做这样的事情来实际显示字段:

HTML:
  div ng-repeat="item in scroller.items track by $index">
   <div class="secHead text-center">
     <button class="common btnDarkGrey" ng-hide="!item.show">
       {{item.category_name}}</button>
     <input type="text" id="focus-{{$index}}" class="common btnDarkGrey editDashboardCategory" name="editCategory" value="" ng-model="item.category_name" ng-hide="!item.show">
 <span  data-ng-click="updateCategory(item.category_id,item.category_name,$index)"   class="chkOneDone" ng-show="item.show">Done</span>
   <div class="pull-right">
       <a href="#" class="pen" data-ng-click="updatePen($index)"></a>
 </div>
</div>
 </div> 

Controller:
  //controller declaration --
    $scope.updatePen = function(index){
      $scope.scroller.items[index].show = true;
    };

我的理解是,一旦点击发生,您需要显示所有三个属性,因此我将所有show属性压缩为一个show属性。

您的视图只会看到hideField为真,并对阵列中的所有项执行该操作。我希望这有帮助!