我开始使用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
我还没有得到任何合适的解决方案。
有人能帮助我吗?
谢谢。
答案 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
为真,并对阵列中的所有项执行该操作。我希望这有帮助!