2017-03-05 12 views
0

私はオブジェクトを含む配列を持っています。この配列内のオブジェクトの数をnumber型の入力ボックスから変更したいと思います。だから、入力ボックスの数字が増えるたびに、私は長さを増やし、減らすために同じ長さを増やします。また、デフォルトのオブジェクトをプッシュするか、配列の大きさに応じて最後のオブジェクトをポップすることもできます。ここに私の現在のコードです。タイプ番号の入力ボックスから配列の長さを変更します

// html 
<input type="number" class="form-control" min="0" max="12" ng-click ="topEntriesSelectOffense()" ng-value="page.offense.topRow.length"> 

//my controller 
$scope.topEntriesSelectOffense = function() { 
    // push if number is increased 
    $scope.page.offense.topRow.push({ 
     "1": { 
      "firstName": "FirstName", 
      "lastName": "LastName", 
      "headshot": "file/path" 
     }, 
     "2": { 
      "firstName": "FirstName", 
      "lastName": "LastName", 
      "headshot": "file/path" 
     }, 
     "3": { 
      "firstName": "FirstName", 
      "lastName": "LastName", 
      "headshot": "file/path" 
     }, 
     "position": "POS" 
    }); 
    // pop if the number is reduced 
    $scope.page.offense.topRow.pop(); 
} 

問題は、ユーザーが数を減らし、私は価値の増加または減少を検出する方法が非常に確認していないとき、私は本当に言うカントです。私がpage.offense.topRow.lengthにng-modelを使用すると、長さを増やして配列にギャップを残してオブジェクトをプッシュするので、最後にインデックスにオブジェクトがない配列を取得します。配列は次のようになります。array = [1、3]ありがとう!

答えて

0

2つの関数、オブジェクトを作成する場合はcreateObj()、配列のオブジェクトを破棄する場合はdestroyObj()とします。

入力の変数ごとにオブジェクトを追加/減算する必要があるとします。

この場合、私はのangularjsの機能を読もうとします。 ここでは、oldvarとnewVarという2つの変数を持ち、必要な関数を必要な数だけ比較して呼び出すことができます。たとえば、初期値が10で、ユーザーが7にした場合、destroy()関数を3回呼び出すことができます。

はここでここでそれを使用する方法の簡単な例を与えることをstackoverfllowから別の有用linkをだ$watch機能

ためdoc linkの角度です。

+0

私は私が動作するように、時計機能を取得しようとしてきたが、入力ボックスをここで変更されるたびに '$スコープ、私のコードで解雇されていないようです$のウォッチ機能を使用してのアイデアが好きです。$ (; 'topEntriesOffense'、機能(newValueに、OLDVALUE){} 場合(newValueに> OLDVALUE){ topEntriesOffenseAddを()});見て ' – inhaler

+0

私は助けるために、あなたの更新のコードが必要になります。 Soviutが示唆したように、すべての助けを – Sagar

+0

おかげで、私はNG-変更を使用し、それはあなたがモデルの現在の値に応じて提案のように、私はcreatObj()とdestroyObj()に関数を呼び出す変更したとき。スコープ変数に古い値を保存し、this.valueを呼び出して現在の値を関数で取得します。私は時計が正しく動作するようにすることができませんでした。しかし、この方法はかなりうまくいく。すべての助けをありがとう! – inhaler

0

あなたはあなたの番号欄にng-changeの代わりng-clickを使用する必要があります。これにより、キーボード入力やコピー/ペーストを使用してもイベントが発生することが保証されます。

次に、あなたの変更ハンドラ関数内で、単純に現在の値を求めると、アレイを拡大または縮小するために、アレイsplice()関数を使用します。

関連する問題