【问题标题】:ngTagsInput - how to clear results on selection?ngTagsInput - 如何清除选择结果?
【发布时间】:2016-02-02 00:44:08
【问题描述】:

目前,我正在为我的搜索栏使用 ngTagsInput 指令。但是,我无法找到清除选择结果或阻止标签在搜索栏中呈现的方法。

这是我目前拥有的:

这就是我想要得到的:

我尝试编写指令来检测按下回车键,然后使用 myEnter=$('tags-item').remove() 尝试在创建元素时删除它,但它不仅不起作用,也不理想:

app.directive('myEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.myEnter);
                });

                event.preventDefault();
            }
        });
    };
});

【问题讨论】:

  • 如果你不想要标签,你为什么要使用这个组件?
  • 我想要标签,但不在输入字段内。我只希望它们在我指定的 div 中。

标签: angularjs ng-tags-input


【解决方案1】:

我不知道你为什么要使用这个组件,而你实际上并不想要这些标签。

无论如何,您不需要那个自定义指令。 on-tag-added 几乎可以满足您的所有需求。

即上,添加

on-tag-added="tagAdded($tag)"

在控制器中

$scope.tagAdded = function(tag) {
   //just do whatever you want on tag added, 
   //i.e. clear the ngmodel and add it to another array, etc.
};

【讨论】:

  • 我想使用组件的自动建议和药盒功能。我希望它们在我指定的 div 中呈现,而不是在输入字段中呈现碉堡。
  • 就像我在这个答案中告诉你的那样,你可以在 tagAdded 回调中做你想做的事。例如,清除 ngModel,这样您就不会在搜索框中看到标签,然后将标签添加到另一个数组以显示在您指定的 div 上。
  • 这个答案并不理想,因为如果我使用自动完成,并且我清除了模型,那么我指定的 div 中就有可能出现重复。
猜你喜欢
  • 2017-02-08
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
相关资源
最近更新 更多