javascript - Angular Directive(指令)错误意外的字符串

标签 javascript angularjs

我正在尝试创建一个 Angular Directive(指令)来初始化 select2 , 该指令将用于如下的 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>

指令是

(function() {
    'use strict';

    angular.module('myapp.theme')
        .directive('select2', select2);

    function select2() {
        return {
            $(".select2").select2({ theme: "bootstrap" });
        };
    }

})();

它在控制台中给出了一个错误 Unexpected string pointed to $(".select2").select2({ theme: "bootstrap"});,我错过了吗那里有什么?

最佳答案

正如 eschie 所指出的,您应该使用链接功能让您的代码正常工作。

然而,正如 eschie 所做的那样,使用指令是没有意义的/因为这个 JQuery 代码将选择所有具有类“select2”的元素,因为每次 angular 都会找到它时指令将被执行,angular 将找到 select2 类.

你应该这样做:

angular.module('myapp.theme').directive('select2', select2)
function select2() {
    return{
        restrict: 'A',
        link: function(scope, element, attr){
            $(element).select2({ theme: "bootstrap" });
        }
    }
}

请注意,我限制了属性。我注意到您的 select 标记中有 select2 作为类和属性。 以 Angular 方式,最好使用属性作为指令。如果您想保留第一类,请在指令中使用 restrict:'C'

关于javascript - Angular Directive(指令)错误意外的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37827802/

相关文章:

javascript - 仅识别系统

javascript - Angular 2 中用于双向数据绑定(bind)的共享 RxJS 主题

javascript - 如何创建一个 CSS 类来使输入字段是只读的

angularjs - Angular Material mdTab 和抽象路由问题

javascript - 如何将 select2 4.0 与 angularjs 一起使用,何时初始化它

javascript - AngularJS - 将变量传递到 `$routeProvider`

javascript - 检查库是否已加载或初始化

javascript - 使用 FireBase 在 Ionic 3 中获取带有列名称的值

javascript - Angular 解析被拒绝,但页面仍在加载

javascript - 从 angularjs 中删除 # 并使 url 变得漂亮