我有件這樣的:如何使用非Angular javascript觸發角度ng點擊?
<button ng-click="xyzfunction.vote(true)" class="primary">
我想觸發從角的世界之外ng-click
屬性指定的函數。我怎麼能這樣做?
顯然,我不能僅僅調用xyzfunction.vote(true)
,因爲它沒有全局定義。但它被定義在某處(在某些控制器中)。我怎麼稱呼它?
對於更廣闊的背景:我想調用這個函數在Greasemonkey的腳本
我有件這樣的:如何使用非Angular javascript觸發角度ng點擊?
<button ng-click="xyzfunction.vote(true)" class="primary">
我想觸發從角的世界之外ng-click
屬性指定的函數。我怎麼能這樣做?
顯然,我不能僅僅調用xyzfunction.vote(true)
,因爲它沒有全局定義。但它被定義在某處(在某些控制器中)。我怎麼稱呼它?
對於更廣闊的背景:我想調用這個函數在Greasemonkey的腳本
可以使用angular.element
和$scope
得到來自外部的角度範圍:
var elem = document.querySelector(".controller-element");
angular.element(elem).$scope().xyzfunction.vote();
OFC .controller
需要被取代用選擇器解析爲具有相應範圍的元素。
您可以創建一個全局對象保持功能和角和Greasemonkey的重用:
mynamespace.js:
var MYNAMESPACE = {
xyzfunction: {
vote: function (boolan) {
// your vote function here
}
}
}
mynamespaceFactory.js
angular.module('myapp', []).factory('MyNameSpace', ['$window', function ($window) {
return $window.MYNAMESPACE;
}]);
controller.js
個angular.module('myapp').controller('YourController', ['MyNameSpace', function (MyNameSpace) {
$scope.xyzfunction = MyNameSpace.xyzfunction;
}]);
greasemonkey.js:
MYNAMESPACE.xyzfunction.vote(true);
爲了改善這一點,使用一個強大的namespacing pattern來創建全局對象。
比方說你有以下的HTML:
<div class="wrapper" ng-controller="MyController" id="MyContainer"></div>
然後執行以下辦法從角範圍外部訪問控制器的功能。
angular.element('#MyContainer').scope().yourFunction();
你的問題是非常糟糕的措辭。首先,你忘了添加AngularJS標籤,我添加它,然後我嘗試回答你的問題,然後,你也忘了添加你想要的Greasemonkey環境中的答案... – 2015-03-08 22:35:52
是的,我的歉意 – user3255765 2015-03-08 22:39:22
所以這不是關於angular或'ng-click',但是如何在Greasemonkey的HTML頁面上觸發一個按鈕? – Claies 2015-03-08 23:03:18