AngularJS:想要在点击一次时禁用该链接
我有一个列表,列表中的每个项目都是可点击的。
我希望每个项目只能点击一次。
一旦有人点击它,它将被禁用或第二次无法点击。
我的代码如下:
{{item.name}}
flim的答案几乎可以正常工作,但由于addCtrl
创建了隔离范围,你需要在控制器包含addCtrl
的范围内定义addCtrl
。 这是一个有效的解决方案:
HTML:
JS:
function MainCtrl($scope) { $scope.items = [ {id: 1, name: 'foo'}, {id: 2, name: 'bar'} ]; $scope.insertRecord = function(itemId) { alert(itemId + ' clicked (inserting...)'); }; } function addCtrl($scope) { }
请参阅JSFiddle 。
如果你要在jQuery中附加click处理程序,那么你可以使用.one()
,例如:
$("#whatever").one(insertRecord);//no need to pass a an id as it can be derived within the function
我不确定Angular是否允许你这样做。
在addCtrl的范围内创建一个哈希
$scope.seenIds = {}
你的insertRecord(item.id)将首先检查是否已经看到id。 如果有,不要做任何事情。
$scope.insertRecord = function (id) { if (typeof $scope.seenIds[id] === "undefined") { $scope.seenIds[id] = 1; // do your thing } }
他们可以点击他们想要的所有内容,但除了第一次点击外什么都不会发生