【问题标题】:Call Angular Controller in JS Script在 JS 脚本中调用 Angular 控制器
【发布时间】:2014-12-29 21:42:25
【问题描述】:

我需要在 .jsp 上的 JS 函数中调用角度函数 (=controller)。 我尝试了很多可能,但没有运行。

我的 .jsp 文件包含我的 HTML 和 JS,并且我在 app.js 中有角度函数。

/* 
** app.js
*/

$scope.addEvent = function(element, byTypeAdd) {
    	if ($scope.element && $scope.byTypeAdd){
    		$scope.events.push({ name : $scope.element, type : $scope.byTypeAdd });
    		$scope.element = '';
    	};
    }
<script>
  function fewValues() {
    var valueId = 1;
    var valueType = "Type 1";
    
    
    /*Here i want to use addEvent*/
    
  }
    

【问题讨论】:

  • 您到底想做什么?为什么要调用控制器?我们可以看看一些代码吗
  • 将 app.js 文件放在你的 js 函数之前。
  • 跟进问题:为什么我的视图没有更新。不,真的,不要做那样的事情。使用服务将您的控制器或代码绑定在一起。
  • 我不想真正调用控制器,而是调用这个函数。 div 之间的所有角度都在我的 .jsp 中运行,但这个脚本在所有 div 下。
  • 我想说的是,如果您从 外部 调用您的角度代码,则不会按预期工作。因为 Angular 不会识别它应该检查更改。如果你走这条路,你会遇到其他问题。所以我建议不要开始朝那个方向发展。

标签: javascript angularjs


【解决方案1】:

我建议您将 addEvent 方法设为服务并通过 angular.injector

执行相同的操作

以下是上述文档中的示例

var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
$(document.body).append($div);

angular.element(document).injector().invoke(function($compile) {
  var scope = angular.element($div).scope();
  $compile($div)(scope);
});

【讨论】:

    【解决方案2】:

    我没有为我的问题找到一个好的解决方案,所以我切换到 JQuery 并运行它。

    感谢您的帮助

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2017-09-29
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      相关资源
      最近更新 更多