我们可以在 Jquery 中使用 angularJS 吗?

Can we use angularJS within Jquery?

我正在使用 JStree,它使用 Jquery。我有一个 bootstrap 模式,可以在 JStree 中执行某些操作时显示,例如在节点上执行 check/uncheck 。我使用 ng-show="showonclickinJStree" id="showonclickinJStree" 隐藏了模式。

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

请问为什么?是否不允许在 Jquery 函数中使用 AngularJS 定义?

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

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

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

因为指令的 link 函数是您实际可以进行一些 DOM 操作的地方,而且它主要以标准方式使用。


您的问题:

请问为什么?

因为无法触发此 $scope.showonclickinJStree = true 模态。同样可以在指令中实现,如答案中所建议的,您可以将其更改为:

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

现在如文档中所述,任何外部或 angular 领域的更改都不会自动反映出来。您需要告诉 angular 到 运行 摘要周期,以查看 $digest()/$apply() 方法是否有任何变化。不可取,因为这必须明确地完成。

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

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