Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在指令内单击ng重复_Angularjs_Angularjs Directive_Angularjs Scope_Ng Repeat_Angularjs Ng Click - Fatal编程技术网

Angularjs 在指令内单击ng重复

Angularjs 在指令内单击ng重复,angularjs,angularjs-directive,angularjs-scope,ng-repeat,angularjs-ng-click,Angularjs,Angularjs Directive,Angularjs Scope,Ng Repeat,Angularjs Ng Click,我正在尝试创建一个简单的自动完成标记指令。但是下拉菜单上的上的ng单击将不会触发。我确信这是某种范围问题,但我不明白为什么。有人能告诉我如何让这个ng点击开火吗?谢谢 以下是模板: <article ng-click="focus()"> <div class="tags-container"> <div ng-repeat="selectedTag in selectedTags" ng-click='removeTag($index)' clas

我正在尝试创建一个简单的自动完成标记指令。但是下拉菜单上的
  • 上的
    ng单击将不会触发。我确信这是某种范围问题,但我不明白为什么。有人能告诉我如何让这个ng点击开火吗?谢谢

    以下是模板:

    <article ng-click="focus()">
    
      <div class="tags-container">
    
        <div ng-repeat="selectedTag in selectedTags" ng-click='removeTag($index)' class="tag">
          <span class="tagName">{{selectedTag}}</span>
        </div>
    
        <input type="text" ng-focus='activate()' ng-blur='listActive = false' id="searchInput" ng-keydown="checkKeyDown($event)" class="tags" ng-model="searchText" />
    
      </div>
    
      <ul id="suggestions" class="suggestions-list" ng-class="{active : listActive}">
        <li ng-repeat="tag in tagList | filter:searchText" class="tags" ng-click="addToSelectedTags($index)" ng-mouseover="$parent.index=$index" ng-class="{active : index===$index}">
          <strong>{{tag}}</strong>
        </li>
      </ul>
    
    </article>
    
    这是html中的指令

    <tag-complete tag-list="vm.suggestions" selected-tags='vm.query.fields'></tag-complete>
    

    您的ng点击应该触发。我尝试将您的代码输入到小提琴中,并对其进行了一些修改:

    可以尝试单击li元素。我发现这部分代码有问题:

    ng-click="addToSelectedTags($index)"
    
    当您在searchInput中写入内容时,它将过滤您的ng重复列表$因此,索引将与标记列表中的索引不匹配,它可能会尝试添加已存在于selectedTags列表中的内容。我将其更改为直接输入标签:

    ng-click="addToSelectedTags(tag)"
    
    我在代码中所做的其他更改只是为了让它在JSFIDLE中运行。
    这对你的问题有帮助吗?我能想到的另一个原因是与css相关的东西

    我讨厌那个家伙,你这么做可能只是为了好玩,但以防万一,你看到了吗:如果你在
    addToSelectedTags
    (console.log)中添加一个日志,你什么都看不到?它应该是这样工作的我在函数中放置了一个断点,它不会触发。我看过Ngautomplete,但我想自己制作一个,这样它就可以完全满足我的需要,不多不少。如果删除
    文章
    元素上的
    ng click=“focus()”
    处理程序,这有帮助吗?不,删除ng click=“focus()”后没有区别。虽然这不是我面临的直接问题,不过,这确实让我找到了答案,所以非常感谢!问题是我让ng blur将下拉设置为hidden,这是在单击处理程序启动前几秒钟发生的。感谢您解决了我代码中的另一个bug,我下一步可能会遇到这个bug。
    ng-click="addToSelectedTags(tag)"