Javascript 角度指令错误意外字符串
我试图创建一个角度指令来初始化,该指令将在下面的select标记中使用Javascript 角度指令错误意外字符串,javascript,angularjs,Javascript,Angularjs,我试图创建一个角度指令来初始化,该指令将在下面的select标记中使用 <select ng-model="add.doctype" class="form-control select2" select2 append-to-body ng-options="x.tipe for x in ::Types"> <option value=""></option> </select> 它在控制台中给出了一个指向$(“.select2”).
<select ng-model="add.doctype" class="form-control select2" select2 append-to-body ng-options="x.tipe for x in ::Types">
<option value=""></option>
</select>
它在控制台中给出了一个指向$(“.select2”).select2({theme:“bootstrap”})的意外字符串错误代码>,我错过了什么吗?1)检查以确保jQuery包含在我们的项目中
2) 初始化要用作类选择器的指令。根据Angular的指令文件:
注意:创建指令时,默认情况下仅限于属性和元素。为了创建由类名触发的指令,您需要使用restrict选项
3) 将逻辑放在指令的链接函数中:
angular.module('myapp.theme')
.directive('select2', select2)
function select2() {
return{
restrict: 'C',
link: function(){
$(".select2").select2({ theme: "bootstrap" });
}
}
}
正如eschie所指出的,您应该使用link函数使代码正常工作
但是,正如eschie所做的那样,使用指令/是没有意义的,因为每次angular找到它时,JQuery代码都会选择类为“select2”的所有元素,因为angular每次找到select2类时都会执行指令
你应该这样做:
angular.module('myapp.theme').directive('select2', select2)
function select2() {
return{
restrict: 'A',
link: function(scope, element, attr){
$(element).select2({ theme: "bootstrap" });
}
}
}
注意,我对属性进行了限制。我注意到您在select
标记中选择了2作为类和属性。
在角度上,最好使用属性作为指令。如果要在指令中保留第一类userestrict:'C'
。是否可以删除'use strict';进行检查<代码>返回{…}
表示返回的对象没有键。请尝试`返回{link:function(scope,element){jQuery(element[0])。select2({theme:'bootstrap'}}}}删除使用strict
不解决问题。OP似乎在使用属性select2
以及类。此外,如果您的值超过1,您可能应该将元素传递给link函数。select2“元素修改了指令,并将指令名称更改为select21
,它不会给出任何错误,也不会初始化select
标记。将restrict更改为“CA”以初始化类和属性上的指令。另外,请确保指令、类和/或属性标记的名称都匹配。它会给出一个错误$(…)。select2不是一个函数
@JosephGoh您是否在index.html文件中包含select2库?我使用的是bower
,它假定会自动正确添加库。但感谢各位付出的时间和努力,真的很感激。我已经找到了负责这项工作的用户界面。再次感谢大家。@JosephGoh你应该说这句话作为一个答案,或者至少是一个编辑,这样人们就会知道,对你来说,问题已经解决了。
angular.module('myapp.theme').directive('select2', select2)
function select2() {
return{
restrict: 'A',
link: function(scope, element, attr){
$(element).select2({ theme: "bootstrap" });
}
}
}