代码之家  ›  专栏  ›  技术社区  ›  jonesy

在角度模板中使用jquery ui小部件

  •  0
  • jonesy  · 技术社区  · 6 年前

    我有一个角度项目,我没有在任何接近jquery ui复选框的css库中找到好看的复选框,我想在我的角度项目中使用这些复选框。 使用jquery,您可以在页面加载后使用以下代码设置复选框的样式…

    $(document).ready(function(){
        $(":checkbox").checkboxradio();
    });
    

    提供了使用…导入的jQuery库。index.html文件中的类似内容

    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    

    尽管我已经在npm中安装了jquery,但可能还有其他方法可以做到这一点。然后在我的组件中,我在导入之间声明了一个变量,并在初始化之后调用jquery函数。

    import { Component, AfterViewInit } from '@angular/core';
    
    declare var $:any;
    
    @Component({
      selector: 'app-test',
      template: `<label for="checkbox1">checkbox 1</label>
                <input type="checkbox" name="checkbox1" id="checkbox1">`
    })
    export class CrimeTableComponent implements AfterViewInit {
    
      ngAfterViewInit(): void {
        $(document).ready(function(){
          $( "#checkbox1" ).checkboxradio({
            icon: false
          });
        });
      }
    

    我一直在 Uncaught TypeError: $(...).checkboxradio is not a function

    这是可能的还是我做错了什么?

    1 回复  |  直到 6 年前
        1
  •  0
  •   jonesy    6 年前

    解决了类似问题的阅读(我可能有点仓促地发布了这个问题),开始通过npm安装jquery和jquery ui。遵循这个答案 walakad's answer 我需要通过npm检查jquery ui dist,然后通过引用angular-cli.json文件来确保导入的所有内容。

    "scripts": [
            "../node_modules/jquery/dist/jquery.min.js",
            "../node_modules/jquery-ui-dist/jquery-ui.min.js",
            ...etc..
    ],   
    

    另外(这是阻止我把这个标记为一个复制品的一个部分,和其他任何答案不同)。

    "styles": [
            "../node_modules/jquery-ui-dist/jquery-ui.css",
            ...etc..
    ],
    

    获得JQuery UI小部件是很重要的,我使用它来工作。

    然后与上面声明JQuery变量并只调用jQuery的一样,不需要文档准备好,这是由后面的角度覆盖的…

    import { Component, AfterViewInit } from '@angular/core';
    
    declare var $:any;
    
    @Component({
      selector: 'app-test',
      template: `<label for="checkbox1">checkbox 1</label>
                <input type="checkbox" name="checkbox1" id="checkbox1">`
    })
    export class CrimeTableComponent implements AfterViewInit {
    
      ngAfterViewInit(): void {
        $("#checkbox1").checkboxradio({
            icon: false
          });
      }
    }
    

    现在它工作了:)