在 Angular 指令中使用基于 jQuery 的自动完成插件

Posted

技术标签:

【中文标题】在 Angular 指令中使用基于 jQuery 的自动完成插件【英文标题】:Working a jQuery-based autocomplete plugin into an Angular directive 【发布时间】:2016-09-04 15:18:31 【问题描述】:

我在从 Web api 提取员工姓名的指令中使用了 Devbridge Ajax jQuery autocomplete plugin。 I am having an issue updating the model when a value is selected or on blur of the field.这是我的代码:

Plunker

更具体地说是我的指令:

app.directive('employeeName', ['employeeService', function (employeeService) 
    return 
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, elem, attrs, ctrl) 

            employeeService.getAll()
                .then(function (data) 
                    $(elem).devbridgeAutocomplete(
                        lookup: $.map(data, function (employee, i) 
                            return  value: employee.name, data: employee ;
                        ),
                        onSelect: function () 
                            console.log('select');
                            update();
                        ,
                        onInvalidateSelection: function () 
                            $(this).val('');
                        
                    );
                );

            elem.on('blur', function () 
                console.log('blur');
                update();
            );

            var update = function () 
                var value = elem[0].value;

                scope.$apply(function () 
                    ctrl.$setViewValue(value);
                    ctrl.$render();
                );

                console.log(value);
                console.log(ctrl.$modelValue)
                console.log(scope.organizer);
            ;
        
    ;
]);  

编辑:解决方案

GitHub:jQuery-Autocomplete-to-Angular

【问题讨论】:

什么不起作用?对我来说似乎很好...... @Dan 问题似乎在我将其移入 Plunker 后自行解决。我只需要深入研究我的代码,看看还有什么可能影响它。无论如何,感谢您的调查。 好的。我注意到退格键的行为并不理想。 【参考方案1】:

放入 Plunker 时似乎工作得很好......

【讨论】:

以上是关于在 Angular 指令中使用基于 jQuery 的自动完成插件的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Freewall jQuery 插件创建 Angular 指令

Angular 4 - 在 jquery append 中编译 [ngClass]

Angular js指令中的jquery

如何通过 jQuery 的 .append() 添加 DOM 元素(Angular 指令)?

angular2采用自定义指令(Directive)方式加载jquery插件

使用 ng-include 作为父节点时,使用 jquery 禁用所有子元素的 Angular 指令不起作用