2014-09-11 41 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