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 にあり、Screen が 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 に答える