2016-07-12 11 views
0

ユーザーが入力しているときに入力フィールドの値を取得します。角度のモデルと入力フィールドの値

この場合、ng-modelで何をしているのか分かりません。

ルータ:

  .state('layout.manifest', { 
       url: '/manifest', 
       templateUrl: 'Content/js/apps/store/views/manifest.html', 
       controller: 'manifestController', 
       controllerAs: 'manifestVm', 
       data: { pageTitle: 'Manifest' } 
      }) 

HTML:

<input 
     type="text" 
     ng-model="scanCode" 
     ng-keypress="manifestVm.scanId()" 
    /> 

コントローラ:

vm.scanId = function() { 
    console.log(vm.scanCode); 
} 

これは未定義を返します。

私は値を直接取得するために他の方法を試しましたが、役に立たないものです。

[EDIT:明確にするためにルータ/コントローラを含むように更新]

+0

コントローラで$ scope.inputs = {scanCode: ""} を定義します。次に、inputs.scanCodeを使用してテンプレート内でアクセスできます。 コントローラでは$ scope.inputs.scanCodeでアクセスできます – labago

答えて

0

以下のように単純:

閲覧:

<input ng-model="vm.model" ng-change="vm.see(vm.model)" > 

をコントローラ:

vm.see = function (model){ 
    console.log(model); 
}; 
+0

は未定義を返します – DaveC426913

+0

ルートで 'controller:" manifestControllerをvm "'として試してみますか? –

0

これはうまくいくはずです。

<input 
    type="text" 
    ng-model="manifestVm.scanCode" 
    ng-keypress="manifestVm.scanId()" 
/> 
+0

シュート、私はコントローラを後方に持っています。私は私のポストを修正しました。しかし、あなたのコードはまだ動作しません - それは私のものと同じになります。 – DaveC426913

+0

**エイリアス*として** ControllerName **である必要があります。それで正しいはずです。コントローラーとHTML全体を含めてください。 – 10100111001

+0

私はそれを見ます。モデルにはVM参照が必要です。 – DaveC426913

0

これは私がそれを実現してきた方法です:

<input 
    type="text" 
    id="scanInput" 
    ng-model="manifestVm.scannedCode" 
    ng-change="manifestVm.findPackageById()" /> 



    vm.scannedCode=null; 
    vm.findPackageById = function() { 
     var inputValue = event.target.value; 
    } 

モデルはそれとは何の関係もありませんけれども、私は、値を持っています。

関連する問題