2016-07-29 4 views
1

私は角度で初心者だと私は、この問題を解決しよう:私は<input/>フィールドました:変更された値の長さがxに等しい場合にのみ、入力テキストでevent ng-changeディレクティブを使用する方法は?

<input 
    ng-model="codebare" 
    ng-change="addSale(codebare)" 
    name="keyWord" 
    type="text" 
    class="form-control" 
    placeholder="Product name or barcode value" 
    autofocus /> 

、あなたがそれを見ることができるように、私は、入力値(ng-model="codebare")を取得したい任意の時間それは変わる。私の問題は、このコードは最初の文字がフィールドを埋めるときにのみ機能し、バーコードスキャナを使用しているので、最初の文字(3)の代わりに完全な値(3876666667677777287)を取得したいと考えています。それを行う簡単な方法はありますか? ng-change-options="length"のようなディレクティブには思えますが見つかりませんでした。あなたはバーコードスキャナを使用している場合は、モデルが更新されないので、コード全体を完全に入力するための時間があったまで、私はデバウンスのNG-モデル・オプションを追加することになり

$scope.addSale = function(codebare) { 
    alert(codebare); 
    var item = $scope.codebare; 
    alert(item); 
    $scope.orderedItemCnt = 1; 
    var foodItem = { 
     orderedItemCnt: 1, 
     totalPrice: item.price, 
     itemId: item.id, 
     id: $scope.itemsCnt, 
     item: item 
    }; 
} 
+0

代わりに使用する$腕時計をしてみてください? $ watch( 'codebare'、$ scope.addSale) ' – MMhunter

+0

$ watchについてはモデルのため、ng-changeの指示は$ watchにデータを与えるものです。 $ scope.addSale = function(codebare){ $ scope。$ watch(function(scope){return scope.data.codebare}、 ファンクション(newValue、oldValue){ アラート(newValue); } ); .... –

答えて

0

:次は私addSale()機能です。

以下のサンプルを作成しました。

angular.module('optionsExample', []) 
 
.controller('ExampleController', ['$scope', function($scope) { 
 
    
 
    var data = { 
 
    1264274554897965: { id: "AGDFT144", price: 10.50 }, 
 
    3124142142123532: { id: "AGFHH156", price: 2.15 }, 
 
    6588969543172554: { id: "BNHKL102", price: 101.60 } 
 
    }; 
 
    $scope.barcode = 6588969543172554; 
 
    $scope.$watch("barcode", function(newValue, oldValue) { 
 
    if (newValue) 
 
     addSale(newValue); 
 
    }); 
 
    
 
    function addSale(barcode) { 
 
    var item = data[barcode]; 
 
    var foodItem = { 
 
     orderedItemCnt: 1, 
 
     totalPrice: item.price, 
 
     itemId: item.id, 
 
    }; 
 
    console.log(foodItem); 
 
    } 
 
     
 
    
 

 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> 
 
<div ng-app="optionsExample" ng-controller="ExampleController"> 
 
    <form name="itemForm"> 
 
    <label>Name: 
 
     <input type="text" name="barcode" 
 
      ng-model="barcode" 
 
      ng-model-options="{ debounce: 500 }" /> 
 
    </label> 
 
    <br /> 
 
    </form> 
 
    <pre>user.name = <span ng-bind="barcode"></span></pre> 
 
</div>

+0

Wow dude、[ヘルプ吸血鬼](http://meta.stackoverflow.com/questions/258206/what-is-a-help-vampire)@ Saint-CyrMAPOUKA。私はあなたがそれをすべて理解したので私の答えを削除します – scniro

+0

私はそれがすでにあなたが上記のコメントを削除することができますしてくださいことができます固定しましたか? –

+0

私はすべての項目の数量を編集したいと思います(プラス/マイナスボタンを使うだけでなく、ループ内で ng-repeated)、コントローラ内で値$ scope.quantityEditedを取得できませんでした。この特定のアイテムtotalPriceおよび販売価格全体を更新するには、scniroを助けてください....私は多くのquationを知っています –

関連する問題