在AngularJS中切换编辑状态并更改项目'单击另一个函数
Toggle an edit state in AngularJS and change items's ng-click to another function
我得到了一个编辑按钮和一个包含项目的列表。当我点击编辑时,我想进入"编辑模式",当在编辑模式下时,我希望能够点击列表中的项目,并在点击时删除它们。当不处于编辑模式时,这些项目会调用另一个函数,所以我不确定如何实现这一点。
这是我的标记:
<span class="side-text"><a ng-click="toggleEditState()">Edit</a></span>
<ul id="fav-tags-list" class="list">
<li ng-repeat="tag in tagsList" ng-bind="tag"
ng-click="shared.getImages(tag)"></li> //If editState = true then change to removeTag(tag)
</ul>
以及处理编辑状态模式的控制器:
flickrApp.controller('tagsCtrl', ['$scope', '$firebase', 'shared', function($scope, $firebase, shared) {
$scope.editState = false;
$scope.shared = shared;
$scope.removeTag = function(tag) {
shared.updateTags(tag);
var newTagsList = shared.getTags();
sync.$set({favoriteTags: newTagsList});
}
$scope.toggleEditState = function() {
if ($scope.editState === false) {
$scope.editState = true;
}
else {
$scope.editState = false;
}
}
}]);
我将如何在这里实现我想要的?如果有更聪明的解决方案,我会接受它。
我认为有一个非常简短而优雅的解决方案:
<div ng-click="select? a() : b()">some element</div>
如果select
为真,则调用a()
,否则调用b()
。
这里有一个plnkr,展示了我在几个div上的解决方案,为您的用例实现它应该不难。
您可以创建一个函数,根据$scope.editState
变量调用shared.removeTag(tag)
或someOtherFunction(tag)
。
例如:
$scope.myFunction = function(tag) {
if ($scope.editState) {
shared.removeTag(tag)
} else {
shared.getImages(tag)
}
}
HTML:
<li ng-repeat="tag in tagsList" ng-bind="tag"
ng-click="myFunction(tag)"></li>
一个可能的解决方案是有两个列表。一个在不处于编辑模式时显示,另一个则显示。
<span class="side-text"><a ng-click="toggleEditState()">Edit</a></span>
<ul id="fav-tags-list" class="list" ng-show="!editState">
<li ng-repeat="tag in tagsList" ng-bind="tag"
ng-click="shared.getImages(tag)"></li>
</ul>
<ul id="fav-tags-list" class="list" ng-show="editState">
<li ng-repeat="tag in tagsList" ng-bind="tag"
ng-click="shared.removeTag(tag)"></li>
</ul>
相关文章:
- Dojo:访问dijit.form.Select中单击的项目
- 角度的项目列表 ng 重复,ng 单击显示全宽描述
- 将单击事件添加到附加的项目中
- 设置单击项目符号导航后不起作用的间隔
- 选择了多个用javascript单击的项目
- 获取中继器控件ASP.Net中显示的单击项目文本框
- 正在删除正在单击的项目
- 单击Oracle APEX导航栏项目时的条件操作
- 为什么当我单击X时,所有项目都会从我的Backbone.js视图中删除
- 如何根据单击的项目在modalbox中获取值
- Metro 应用程序中的列表视图项目单击
- 当索引页面上的项目单击时发布 ajax
- 单击按钮可更改多个跨度项目
- 如何在每次在 php 中单击提交时逐个显示数据库中的项目
- 单击相应的“btn”时编辑“项目”的css
- 仅在单击下拉列表中的项目时显示列表框
- 使用Selenium WebDriver单击下拉菜单不会激活Javascript来添加或删除页面中的项目
- 如何根据单击块中的哪个项目来渲染不同版本的分部
- Ext JS,项目单击侦听器似乎不起作用
- 高图上的条形项目单击事件