2013-03-26 9 views
9

जोड़ने js मैं इस कोड का उपयोग कोणीय js है:कोणीय दो नंबर मुद्दा

<!DOCTYPE html > 
<html> 
<head> 
    <title>Untitled Page</title> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script> 
    <script type="text/javascript"> 
     function TodoCtrl($scope) { 
      $scope.total = function() { 
       return $scope.x + $scope.y; 
      }; 

     } 
    </script> 
</head> 
<body> 
    <div ng-app> 
    <h2>Calculate</h2> 

    <div ng-controller="TodoCtrl"> 
    <form> 
     <li>Number 1: <input type="text" ng-model="x" /> </li> 
     <li>Number 2: <input type="text" ng-model="y" /> </li> 
     <li>Total <input type="text" value="{{total()}}"/></li>  
    </form> 
    </div> 
</div> 

</body> 
</html> 

मैं गुणन, भाग और घटाव लेकिन इसके लिए क्या करने में सक्षम हूँ, कोड सिर्फ x और y मान concatenates (यानी अगर x = 3 और y = 4, कुल 7 होने की बजाय 34 है)

मैं क्या गलत कर रहा हूं?

return parseFloat($scope.x) + parseFloat($scope.y); 

+ ओवरराइड स्ट्रिंग संयोजन आप 2 तार है जब:

उत्तर

17

यदि वास्तव में यह मामला है तो क्या हो रहा है यह है कि एक्स और वाई के लिए पारित होने वाले मूल्यों को तारों और संयोजित माना जा रहा है। क्या करना चाहिए है उन्हें संख्या में कन्वर्ट parseInt

return parseInt($scope.x) + parseInt($scope.y); 

का उपयोग कर या अगर आप दो संख्याओं को एक साथ जोड़ने के लिए संक्षिप्तता

return $scope.x*1 + $scope.y*1; 
+0

ऐसा कुछ नहीं है! मैं इस तरह के अल्पसंख्यक के बारे में और कहाँ जान सकता हूं? – mpora

+1

@ मोपोर - बस मुझे लगता है कि चारों ओर पोकिंग के माध्यम से। मुझे ऐसी साइट से अवगत नहीं है जिसमें सूची में प्रदर्शित सभी शॉर्टकट हैं। मुझे यह पोस्ट ग्रिड के बारे में मिला है: http://stackoverflow.com/a/2117523/1026459 –

+0

धन्यवाद, मैं हमेशा शराब की तलाश में हूं। – mpora

7

आप इस चाहते हैं। आपको उन्हें पूर्णांक या स्पष्ट रूप से फ़्लोट करने की आवश्यकता होगी। -, *, / यदि संभव हो तो सभी संख्याओं पर पहुंच जाएंगे।

+0

parseFloat काम करता है लेकिन नहीं parseInt, दिलचस्प है। – mpora

+0

क्या वे पूर्णांक हैं? यदि ऐसा नहीं है तो क्यों होगा। ParseInt के बारे में क्या काम नहीं करता है? –

0

पसंद करते हैं मैं पूर्णांकों के लिए स्ट्रिंग पार्स और बातिल के लिए जाँच करेगा:

function TodoCtrl($scope) { 
    $scope.total = function() { 
     var firstNum = parseInt($scope.firstNum) 
     var secondNum = parseInt($scope.secondNum); 

     if (!firstNum) 
      firstNum = 0; 
     if (!secondNum) 
      secondNum = 0; 

     return firstNum + secondNum; 
    } 
} 
1

सही तरीके से फ़्लोटिंग नंबर जोड़ना

$scope.Total = parseFloat($scope.firstValue) + parseFloat($scope.secondValue); 
$scope.Total = parseFloat($scope.Total.toFixed(2)); 

$ scope.Total अब अगर ng-model साथ बाध्यकारी उदाहरण के लिए लागू किया जाता है ध्यान में रखते हुए सही ढंग से प्रदर्शित होगा यदि आप

$scope.firstValue = 10.01; 
$scope.firstValue = 0.7; 

$scope.Total = parseFloat($scope.firstValue) + parseFloat($scope.secondValue);

चर $scope.Total10.709999999999999 होगा और यह सही नहीं है ! पार्सफ्लैट के साथ जोड़ना सही मूल्य के लिए पर्याप्त नहीं होगा। लेकिन अगर आप लागू

$scope.Total = parseFloat($scope.Total.toFixed(2));

मूल्य सही ढंग से परिणाम होगा: $scope.Total = 10.71

बनें बिन्दु संख्या चल सावधान इच्छा जावास्क्रिप्ट में

+0

यदि संभव हो तो डेमो जोड़ें –

0

ऐसा इसलिए है क्योंकि है संयोजन अलावा ऑपरेशन या साथ-साथ उसका पूर्वता है प्लस (+) ऑपरेटर। चूंकि, मिनस ऑपरेटर (-) ठीक काम करता है, यहां एक सरल हैक है!

<script type="text/javascript"> 
    function TodoCtrl($scope) { 
     $scope.total = function() { 
      //Subtracting a Zero converts the input to an integer number 
      return (($scope.x - 0) + ($scope.y - 0)); 
     }; 

    } 
</script> 

साथ ही आप ऐसा कर सकता है: मैं सलाह देने के लिए आप "संख्या" करने के लिए अपने निवेश के प्रकार को बदलने के लिए है, तो, आप इसे पार्स करने के लिए की जरूरत नहीं होगी

<form> 
    <li>Number 1: <input type="text" ng-model="x" /> </li> 
    <li>Number 2: <input type="text" ng-model="y" /> </li> 
    <li>Total <input type="text" value="{{(x-0) + (y-0)}}"/></li>  
</form> 
0

, कोणीय यह परिवर्तित कर देंगे स्वचालित रूप से interger करने के लिए।मैंने किया है और यह, काम करता है एक गुंजाइश के बिना, लेकिन केवल संख्या के रूप में अपने {{कुल}}

1

बनाओ इनपुट प्रकार घोषित करने के लिए है, क्योंकि यह इसके अलावा आपरेशन

<input type="text" ng-model="x" /> 
<input type="text" ng-model="y" /> 
संबंधित मुद्दे