1

如何从纯 javascript 执行 AngularJs 方法?

myApp.controller("someController",["$scope",function($scope){
  //Some code was here
  $scope.a = valueA;
  $scope.b = valueB
});

稍后在代码中想要执行一个函数,该函数在有效时可以执行一个 IF,如果是这样的话,它将执行我的 AngularJS 控制器或其他任何东西。

function Clicked(){
if( was clicked correctly ){
    //execute my Controller and send some data to add to the DOM
}

我不希望我的 HTML 元素触发控制器内的功能。我知道我可以从我的 AngularJS 控制器构建我的画布,然后,因为我在控制器内部,所以我可以更轻松地访问它。但是,我想知道是否有任何方法可以从 Angular 外部执行,这样我就可以让我的控制器轻而易举。

因为; 我想做的是将Phaser Framework中的一个小游戏与我在AngularJS中制作的一些外部元素连接起来。把它想象成电视,只是底部和控制器在 Phaser 中,而屏幕则是 Angular 部分。因此,基本上当 Phaser 部分发生某些事情时,我想与 Angular 部分进行沟通。

4

1 回答 1

1

终于有办法了

var intermediary;

myApp.controller("someController", ["$scope",function($scope){

  intermediary = function(fn){
        var phase = $scope.$root.$$phase;
        var value;
        if(phase == '$apply' || phase == '$digest') {
            if(fn && (typeof(fn) === 'function')) {
                value = fn();
                if(value){
                    $scope.valIntermediary = value;
                }
            }
        } else {
            $scope.$apply(function() {
                value = fn();
                if (value) {
                    $scope.valIntermediary = value;
                }
            });
        }
    };

  $scope.$watch("valIntermediary",function(){
      //Do something whit a value var inside my controller
  });
}]};

if(intermediary){
   intermediary(function(value) {
      return { /*Some data when click is true*/}
   })
}
于 2014-08-29T13:37:57.673 回答