2014-08-28 2 views
1

Как я могу выполнить метод AngularJs из простого javascript?Игра в Phaser - 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, а затем, поскольку я внутри контроллера, у меня будет более легкий доступ к нему. Но я хотел знать, есть ли в любом случае, что я мог бы выполнить извне Углового, чтобы я мог легко и просто оставить мой контроллер.

Потому что; что я хочу сделать, это связать небольшую игру, которую я имею в Phaser Framework с некоторыми внешними элементами, которые я создал в AngularJS. Подумайте о нем, как о телевизоре, о том, что днища и контроллеры находятся в Phaser, а экран - это угловая часть. Поэтому в основном, когда что-то происходит в части Phaser, я хочу донести до угловой части.

+0

Я на самом деле не имеют конкретный ответ, но вы могли бы рассмотреть возможность получения '$ rootScope' из приложения и с помощью' $ rootScope. $ Трансляции ('yourevent ') ', чтобы сообщить всему вашему приложению о клике. –

ответ

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

 Смежные вопросы

  • Нет связанных вопросов^_^