2016-05-31 3 views
0

AngularJSの新機能で、ng-click = "del()を実行すると変数($ scope.checkTotal)の最後の文字を削除/スライス/ "がクリックされます。

たぶん私のアプローチは間違っているが、これまでのところ、私は試してみた:

$scope.checkTotal.slice($scope.checkTotal, -1); 

$scope.checkTotal.substring(0, $scope.checkTotal.length - 1); 

$scope.checkTotal.substring(0, length - 1); 


.controller('tipController', function($scope) { 

    // Numpad 
    $scope.checkTotal = '0.00'; 

    $scope.clicked = function (label) { 
    if($scope.checkTotal === '0.00') { 
     $scope.checkTotal = label; 
    } else { 
     $scope.checkTotal += label; 
    } 
    }; 

    // Prevent multiple decimals 
    $scope.clickedDot = function() { 
     if (($scope.checkTotal.indexOf('.') < 0) || ($scope.checkTotal === '0.00')) { 
     if ($scope.checkTotal === '0.00') { 
      $scope.checkTotal = '0.'; 
     } else { 
      $scope.checkTotal += '.'; 
     } 
     } 
    }; 

    $scope.del = function() { 
     $scope.checkTotal.substring(0, length - 1); 
    }; 

}); 
+1

'$ scope.checkTotal = $ scope.checkTotal.substring(0、長さ - 1)' –

+0

あなたが試したもののいずれかがあれば、あなたが変数に新しい値を割り当てると、働くだろう。 –

答えて

1

あなたのアプローチは正しいですが、メソッドスライスは変数(文字列または配列)の長さを待ちます。おそらくあなたは試すことができます:

$scope.checkTotal = $scope.checkTotal.slice(0, $scope.checkTotal.length-1); 
+0

これを実装すると、文字列全体が削除され、 ""が表示されます。 – nightowl

+0

あなたの変数タイプは何ですか?あなたの可変型の内容は何ですか? –

+0

これは文字列の最後の文字を返します。最後の文字を除く*すべてが必要なので、 "length、-1"ではなく、 "0、length-1"でなければなりません。 (また、説明はわかりません) –

3

あなたは、関数呼び出しからの戻り値を割り当てる必要があります。例えば

$scope.checkTotal.substring(0, length - 1); 

はまた、あなたはおそらく、誰かがテキストボックスに何も削除クリックした場合を考慮しなければならない

$scope.checkTotal = $scope.checkTotal.substring(0, $scope.checkTotal.length - 1); 

でなければなりません。 $scope.checkTotal.substring(0, -1);

+0

答えは有効ですが、$ scope.checkTotal = $ scope.checkTotal.slice(0、$ scope.checkTotal.length-1);以下。サブストリング対スライスのどちらかを選択する理由はありますか? – nightowl

+0

私が考えることができる主な違いは、endr> startの場合にsubstrが開始位置と終了位置の引数を入れ替え、文字列のどの部分がそこにあるかを返します。スライスはそのユースケースで空の文字列を返します。詳細な説明については、https://rapd.wordpress.com/2007/07/12/javascript-substr-vs-substring/を参照してください。 –

1

結果を変数に戻す必要があります。スライスも最初から最後までスライスします。これを試して。

$scope.checkTotal = $scope.checkTotal.slice(0, -1); 
+0

この回答は、以下の他の回答と共に働いています。違いは.sliceと.substringです。経験則や推論がありますか? – nightowl

+0

同じことをする方法は複数あります。唯一の違いは、間違った引数が与えられた場合に予期しない動作を引き起こす可能性のあるいくつかの小さな欠点があることです。これは別の質問で答えられましたhttp://stackoverflow.com/questions/2243824/what-is-the-difference-between-string-slice-and-string-substring –

関連する問題