【问题标题】:Can we use angularJS within Jquery?我们可以在 Jquery 中使用 angularJS 吗?
【发布时间】:2017-01-12 11:50:59
【问题描述】:

我正在使用 JStree,它使用 Jquery。我有一个引导模式,可以在 JStree 中执行某些操作时显示,例如在节点上检查/取消选中。我使用ng-show="showonclickinJStree" id="showonclickinJStree" 隐藏了模态。

如果我在 jquery 函数中设置$scope.showonclickinJStree = true,它就不起作用。不显示模态。 只有当我使用$('#showonclickinJStree').modal('show'); 时,模态才会出现。

我可以知道为什么吗?是不是不允许在 Jquery 函数中使用 AngularJS 定义?

我知道不建议使用 2 种不同的方法。但只是想知道它是如何支持的。

【问题讨论】:

  • 反向是可能的,如果你声明了你的角度模块,那么你可以在指令、服务和控制器等中使用 jquery
  • 你可以使用这个库angular-ui.github.io/bootstrap

标签: jquery angularjs jstree


【解决方案1】:

我认为,这不好。您可以在 angularjs 中使用 jquery。 Angularjs 是一个框架(基于模块的开发),Jquery 是一个库。 Angular 有一些足够的 jquery 功能(JQLite)。

看看一些基本的区别 https://www.quora.com/What-are-the-key-differences-between-jQuery-and-AngularJS

【讨论】:

    【解决方案2】:

    您可以将这行代码放在元素指令的 link 函数中:

    app.directive('thedirective', function(){
       return {
          restrict:'EA',
          link:function(scope, el, attrs){
            $('#showonclickinJStree').modal('show'); 
          }
       };
    });
    

    因为指令的链接函数是你真正可以做一些 DOM 操作工作的地方,它主要以标准方式使用。


    你的问题:

    我可以知道为什么吗?

    因为这个$scope.showonclickinJStree = true 模态不能被触发。正如答案中建议的那样,这可以在指令中实现,您可以将其更改为:

    link:function(scope, el, attrs){
        scope.showonclickinJStree = true;
    }
    

    现在正如文档中所说,任何外部或角度领域的变化都不会自动反映。您需要告诉 Angular 运行摘要循环以查看 $digest()/$apply() 方法是否有任何变化。不建议这样做,因为这必须明确地完成。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      • 2020-12-31
      • 1970-01-01
      相关资源
      最近更新 更多