2013-01-09 48 views
1

我正在使用Angular,我試圖讓$ scope在JavaScript函數中使用它。這裏有一個例子:

我有一個HTML標籤是這樣的:

<a id="doSomething" onclick="javascript: doSomething(this);">Do Something</a> 
<div ng-show="flag">Click!</div> 

和JavaScript函數是這樣的:

function doSomething(obj) { 
    //$scope.flag = true; 
    return true; 
} 

我想是使用$範圍,這個功能。我還沒有找到一種方法來注入它。 事情是我必須用這種方式來調用函數。你有解決這個問題嗎?我會很感激!

謝謝!

回答

4

如果你真的有..這裏是如何:

HTML:

<a onclick="doThing(this);">Do it!</a> 

JS:

function doThing(el) { 
    var $scope = angular.element(el).scope(); 
    $scope.thing = newVal; 
    $scope.$apply(); //tell angular to check dirty bindings again 
} 

請務必閱讀的文檔的angular.element:http://docs.angularjs.org/api/angular.element 和適用範圍$ apply:http://docs.angularjs.org/api/ng。$ rootScope.Scope#$ apply

雖然你的用例是什麼?可能有更好的方法。

+0

這是行不通的:「未捕獲ReferenceError:doThing未定義」 – plocks

0

這是一樣的@安迪的答案,但我說出來的情況下,人們希望看到如何從一個事件,而不是this得到$範圍:

HTML:

<a onclick="doThing(event);">Do it!</a> 

JS :

function doThing(ev) { 
    var $scope = angular.element(ev.srcElement).scope();   
    $scope.flag = true; 
    $scope.$apply(); //tell angular to check dirty bindings again 
} 
+0

ev.srcElement = undefined – vee

+0

@vee請參閱http://plnkr.co/edit/wNe3PA7FCn8qcjpNZHJp?p=preview –

0

你應該叫這個角度NG單擊,然後從那裏穿過範圍。

這裏是我爲你創建的例子。 http://plnkr.co/edit/UDLJYuZhR4yfiocSPjKJ

如果它解決了您的問題,請將其標記爲答案。

1

你也可以做到這一點在線:

JS:

$scope.doThis = function(str){ 
    alert(str); 
    $scope.$apply(); 
} 

HTML:

<button onclick="angular.element(this).scope().doThis('TEST');"></button> 

警告 - 範圍嵌套可能會影響結果,但如果角碼是在父控制這項工作罰款出箱

相關問題