2013-07-04 20 views
0

在觀看AngularJS最佳實踐後,他們聲明DOM操作不應該在控制器中完成,我完全購買它。AngularJS控制器 - 與視圖元素交互?

因此,可以說我正在使用Twitter引導並在那裏顯示模態對話框。 如果我想從我的控制器中的某個功能關閉此對話框。

然後我不能去做$('#registerDialog')。modal('hide');因爲這是將控制器綁定到DOM元素。

什麼是從控制器內部做到這一點的正確方法?

+0

你有單獨的對話框控制器嗎? – 2013-07-04 11:34:30

+0

如果是這樣,你應該能夠通過'dialog.close();' – 2013-07-04 11:35:44

+0

關閉對話框不,我沒有單獨的控制器,但即使我做了,某處也需要一個.modal('hide' );在實際的視圖元素上調用完成...或者是否有我失蹤的東西? –

回答

0

Angular使用$範圍與DOM之間的數據綁定來完成這些操作。 如果您想在出現問題時隱藏彈出窗口,您應該在模態對話框的根目錄中使用指令,並將其綁定到作用域上存在的布爾值。 首先,如果你要設置這個值的範圍,你必須在你的控制器做:

$scope.isModalHidden = <true|false> 

如果這是發生的事情作爲一個異步操作的結果(如超時/服務器響應),你應該換行前面的語句,像這樣:

$scope.$apply(function(){ 
    $scope.isModalHidden = <true|false> 
}); 

這將導致角度重新審視isModalHidden即使它沒有改變作爲事件的「自然」流的一部分。

即完成之後,所有你需要做的就是將其綁定到DOM,像這樣:

<div id="registerDialog" ng-hide="{isModalHidden}">...</div> 

我希望這有助於。

相關問題