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 } } 

    他们可以点击他们想要的所有内容,但除了第一次点击外什么都不会发生