2015-01-01 12 views
7

में मुझे कोणीय टेम्पलेट में अन्य का उपयोग करने की आवश्यकता है। वाक्यविन्यास क्या है? उदाहरण के लिए ci में नीचे दिए गए कोड की तरह लिखना होगा:अन्यथा अगर कोणीय जेएस टेम्पलेट

if (data.sender=='system') 
{data.receiver} 
else if (data.sender=='mail') 
{data.receiver} 
else {data.sender} 

मेरे कोड:

{{data.sender == 'System' ? data.receiver : ' '}} 

{{data.sender =='mail' ? data.receiver : data.sender }} 
+1

यह यह एक गणना संपत्ति बनाने के लिए और अधिक स्पष्ट हो सकता है। –

+0

मैं और नहीं देख रहा हूं लेकिन "और अगर"! – query

+0

बीटीडब्ल्यू आपका दूसरा स्निपेट पहले के साथ विरोधाभास में है ... – finishingmove

उत्तर

12
{{(data.sender === 'system' || data.sender === 'mail') ? data.receiver : data.sender}} 
+0

आपको शायद नेस्टेड टर्नरी ऑपरेटरों के बजाय फ़िल्टर बनाने के बारे में सोचना चाहिए। –

+0

हाँ यह उत्तर केवल ओपी के मामले में है, लेकिन सामान्य – elaijuh

+0

धन्यवाद नहीं, मैं तर्क जटिल बना रहा था! – query

1

यहाँ है, लेकिन तुम सच टेम्पलेट्स के अंदर जटिल तर्क इस तरह का होने से बचने की कोशिश करनी चाहिए, निर्धारित नियम के रूप में।

{{ data.sender == 'system' ? data.receiver : data.sender == 'mail' ? data.receiver : data.sender }} 
1

आप की जरूरत है एक elseif कोणीय टेम्पलेट में आप C/C++

{{ data.sender=='system' 
< 4 ? data.receiver : data.sender=='mail' ? data.receiver : data.sender}} 

angular.module('quetion_app', []); 
 

 
angular.module('quetion_app').controller('quertion_controller', ['$scope', 
 
    function($scope) { 
 

 
    $scope.data = { 
 
     sender: 'some sender', 
 
     receiver: 'somebody' 
 
    }; 
 

 
    } 
 
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="quetion_app"> 
 

 
    <div ng-controller="quertion_controller"> 
 
    {{data}} 
 
    <br> 
 
    <br> 
 
    {{ data.sender=='system' 
 
    < 4 ? data.receiver : data.sender=='mail' ? data.receiver : data.sender}} </div> 
 

 
    </div>

बदलें data.sender में के रूप में एक त्रिगुट ऑपरेटर का उपयोग कर सकते हैं व्यवहार की जांच करने के लिए स्निपेट में

आशा है कि यह मदद करता है

7

कोणीय टेम्पलेट्स में कोई अगर-किसी और वाक्य रचना कर रहे हैं के रूप में आप देख रहे हैं के लिए। टेम्पलेट्स में बहुत अधिक तर्क इसे बनाए रखना मुश्किल बनाता है। यहाँ दो संभव समाधान हैं:

<span ng-show="data.sender == 'mail' || data.sender=='system'">{{data.receiver}}</span> 
<span ng-show="data.sender != 'mail' && data.sender!='system'">{{data.sender}}</span> 

तुम भी एक समान तरीके से एनजी-स्विच का उपयोग कर सकते हैं:

<span ng-switch="data.sender"> 
    <span ng-switch-when="mail">{{data.receiver}}</span> 
    <span ng-switch-when="system">{{data.receiver}}</span> 
    <span ng-switch-default>{{data.sender}}</span> 
</span> 

बाद में लाभ यह है कि स्पैन की केवल एक ही दस्तावेज़ जहां एनजी में मौजूद नहीं होगा होने दस्तावेज़ में सभी स्पैन मौजूद हैं- छुपाएं/एनजी-छुपाएं वे डिस्प्ले का उपयोग करके छिपे हुए हैं: कोई भी नहीं।

अन्य विकल्प आपके स्वयं के निर्देश लिखेंगे, या विशेष फ़िल्टर बनाएंगे।

0

इस प्रकार का तर्क वास्तव में नियंत्रक या सेवा में है जो आपके $ दायरे में डेटा सेट करने के लिए ज़िम्मेदार है। इसे अपने विचार में रखते हुए अनावश्यक रूप से देखने के लिए बहुत सारे तर्क लाते हैं और यह तर्क उस घड़ी के रूप में चलाने के लिए भी होता है जो महंगा और अनावश्यक दोनों है।

कोड है कि डेटा को स्थापित करता है में आप हो सकता है:

data.displayedSender = (data.sender === 'system' || data.sender === 'mail') ? data.receiver : data.sender; 

फिर अपने ध्यान में रखते हुए आप data.displayed इस के लिए बाध्य:

<span>{{data.displayedSender}}</span>