2014-09-11 42 views
0

何從外部世界觸發ngApp內部的事件?從angular-app外部觸發角度

這是我當前的代碼:

// Inside old code 
    console.log("Start Triggering angular"); 
    $('#issueSelectedPid').val(pid); 
    $('#issueSelectedPid').trigger('input'); 
    console.log("Triggering angular"); 


    // inside ngApp 
    <input id="issueSelectedPid" ng-model="vm.selectedPid" ng-change="vm.doMyStuffTriggerdFromTheOutsideWorld()" /> 

是否有這樣做的更好的方法?

感謝所有幫助

Larsi

回答

1

您可以使用以下代碼訪問示波器:

var appElement = document.querySelector('[ng-app=appName]'); 
var appScope = angular.element(appElement).scope(); 
var controllerScope = appScope.$$childHead; 

controllerScope.functionName(controllerScope.vm.doMyStuffTriggerdFromTheOutsideWorld()in your case)

+0

好主意!我使用控制器作爲語法,我發現我甚至可以跳過可怕的$$ childHead,而是寫入:appScope.vm.doMyStuf ... – Larsi 2014-09-11 10:59:28

+0

:)謝謝。包括$$ childHead;以涵蓋所有兒童範圍。 – Pavi 2014-09-11 11:13:18

0

你需要yourDivId這是定義你的輸入範圍,讓您的html元素,然後調用$的東西或不適用

var scope = angular.element($("#yourDivId")).scope(); 
    scope.$apply(function(){ 
     scope.something= 'something'; 
    }) 
+0

感謝您的建議。在這種情況下,我的ngApp需要了解外部世界,我希望避免這種情況。 – Larsi 2014-09-11 10:55:20

+0

然後你可以得到你應用ng-app和運行範圍的根元素。 – 2014-09-11 10:59:14