2016-06-14 27 views
0

我試圖將ng-show屬性中使用的表達式綁定到jQuery選擇器的結果。這樣做的原因是,我需要隱藏/顯示基於另一種元素(ng-view在角度表達式中使用jQuery選擇器的結果

的標記我有存在的元素是目前

<div ng-view id="partialView"></div> 

<div ng-show="$('#partialView').length === 0"> 
    <h1>MAIN CONTENT</h1> 
</div> 

而當這是呈現我得到:

<!-- ngView: --> 
<div ng-show="$('#partialView').length === 0" class="ng-hide">...</div> 

當未設置ng-view,或

<div ng-view id="partialView">...</div> 
<div ng-show="$('#partialView').length === 0" class="ng-hide">...</div> 

ng-show中的表達式未被評估(或者可能根本沒有重新評估)。

我的問題是

難道這給ng-show綁定到DOM另一個元素的存在正確的方法,如果它是正確的方式做到這一點,什麼是錯我的語法被停止它從工作?

回答

0

您的看法不知道什麼$()是,在您的控制器中指定jquery $$scope元素,例如, $scope['$'] = $

+0

相同的,如果你想使用內置的Javascript功能,如'parseInt'也適用,FO r它們可用於綁定,它們必須分配給$ scope的成員 –

1

ng-show在您在控制器中定義的範圍內工作。

您應該使用jQuery或作用域來定義作用域。

$scope.partialView=0 //or any thing that you want. 

<div ng-show="partialView === 0" class="ng-hide">...</div> 
0

承蒙@巴桑特規則和@馬丁 - glennon的幫助下,我搬到了邏輯到控制器,所以現在我的控制器上定義一個函數的範圍:

var LandingPageController = function ($scope) { 
    $scope.noPartialView = function() { 
     return $('#partialView').length ===0; 
    }; 
}; 

和視圖的樣子:

<div ng-view id="partialView"></div> 

<div ng-show="noPartialView()"> 
    <h1>Main Content</h1> 
</div>