Selectize&AngularJS不与选择框一起玩(多个选项)
发布时间:2020-12-17 10:22:05 所属栏目:安全 来源:网络整理
导读:我一直试图用AngularJS(1.2.4)实现Selectize.我正在使用 this directive与插件接口,一切都运行顺利,直到现在.当从正常选择框使用ngModel它工作正常,并返回预期的对象但是当我尝试使用它与multiple属性时,它不会设置模型. 我已经检查了DOM并且看起来脚本从隐
我一直试图用AngularJS(1.2.4)实现Selectize.我正在使用
this directive与插件接口,一切都运行顺利,直到现在.当从正常选择框使用ngModel它工作正常,并返回预期的对象但是当我尝试使用它与multiple属性时,它不会设置模型.
我已经检查了DOM并且看起来脚本从隐藏的选择中删除了未选择的选项,这可能会使角度绑定变得混乱. 我创建了一个Plunkr来演示这种行为. http://plnkr.co/It6C2EPFHTMWOifoYEYA 谢谢
如上面的评论中所述,您的指令必须监听选择插件中的更改,然后通过ng-model通知角度.
首先,您的指令需要使用以下内容请求对ngModel控制器的可选引用: 要求:’?ngModel’. 它作为第4个位置的参数注入到链接函数中: function(scope,element,attrs,ngModel){} 然后,你必须听取选择中的变化 并使用ngModel通知ngModel.$setViewValue(value) 这是您的指令的修改版本.它应该让你开始. angular.module('angular-selectize').directive('selectize',function($timeout) { return { // Restrict it to be an attribute in this case restrict: 'A',// optionally hook-in to ngModel's API require: '?ngModel',// responsible for registering DOM listeners as well as updating the DOM link: function(scope,ngModel) { var $element; $timeout(function() { $element = $(element).selectize(scope.$eval(attrs.selectize)); if(!ngModel){ return; }//below this we interact with ngModel's controller //update ngModel when selectize changes $(element).selectize().on('change',function(){ scope.$apply(function(){ var newValue = $(element).selectize().val(); console.log('change:',newValue); ngModel.$setViewValue(newValue); }); }); }); } }; }); 也: > plunker (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |