2016-09-22 64 views
0

這是一個相對簡單的問題,但我不明白爲什麼這不起作用。角ng如果多個條件不起作用

因此,我有HTML中的ng-if語句,我檢查條件如果它不是真的。如在:

<div class="new-asset" data-ng-if="$root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8'"> 

但由於某種原因,這是行不通的。我也試過:

<div class="new-asset" data-ng-if="($root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8')"> 

它沒有任何影響......我讀了,並試圖找到一個解決方案,有人建議將在控制器中的狀態,這也將有性能提升(不是100%肯定,如果它會),如:

$scope.addNewAssetIf = $root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8'; 

,然後引用它的HTML作爲:

<div class="new-asset" data-ng-if="addNewAssetIf"> 

但我不能使用這種方法由於異步加載和相關性。我需要以某種方式完成這項工作,即使question_type_id是1,我也不會收到任何錯誤或任何錯誤,但仍顯示.net-asset div。如果我刪除OR語句,並且只有1個條件有效:

<div class="new-asset" data-ng-if="$root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8'"> 

任何幫助表示讚賞。

感謝

+0

在我看來,'question_type_id!='1'|| question_type_id!='8''總是返回'true' – devqon

+0

你確認它是否返回一個數字作爲字符串而不是實際的數字? – Tomer

回答

2

我忽略了與角度有關的所有事情,並試圖理解條件背後的基本邏輯。如果ID == 1不符合第二個條件,它要求它不同於8?對於ID爲8的情況,情況並非如此嗎?

換句話說,你不需要& &而不是||?

這應該是一個評論,但我沒有足夠的聲望。

+0

傳說......! :)我知道這是一件簡單的事情......我想我可能在這裏得到了我自己的邏輯錯誤哈哈:)謝謝 – TSlegaitis

1

嘗試使用功能:

$scope.addNewAssetIf = function() { 
    return $root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8'; 
}; 
+0

感謝您的回答,問題是在addNewAssetIf()運行後,數據被加載。由於其他依賴關係,我無法改變這一點。我知道我們沒有生活在理想世界,但理想情況下我需要HTML版本才能工作:/ – TSlegaitis

+0

如果您沒有使用函數,那麼addNewAssetIf的值將是靜態的。使用一個函數創建一個動態返回,它在每個摘要循環中以角度刷新。這意味着一旦你的異步方法完成並且questionData的值被改變,這個值將被刷新。 – tys

0

你能嘗試使用$rootScope代替$root和包括$rootScope作爲控制器的依賴?這個問題可能只是因爲變量不在範圍之內。您也可以將其分配給您的$scope,然後直接在您的模板中引用它。

基本上,這個想法是嘗試查看值是否與您的模板綁定。你甚至可以嘗試

{{$root.questionData.question_type_id}}</div>

爲了驗證這一點,然後如果沒有,通過解決根源入手。