2014-08-28 33 views
1

如何從普通的javascript執行AngularJs方法?Phaser中的遊戲 - AngularJS中的JavaScript和事件

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部分。

+0

我真的沒有一個明確的答案,但你可以考慮從你的應用程序獲得'$ rootScope'和使用'$ rootScope。$廣播('yourevent ')'告訴你的整個應用程序關於點擊。 – 2014-08-28 19:21:05

回答

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*/} 
    }) 
}