2016-11-01 4 views
2

Here is my JSFiddle.そして、ここのコードです:AngularJSカスタムフィルタをユーザー入力で動作させるにはどうすればよいですか?

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<div ng-app="myApp" ng-init="my_number=255"> 
    Convert a number to hexadecimal, using a custom made service inside a custom made filter: 

    <input ng-model="my_number"> 
    <h1>{{my_number | myFormat}}</h1> 

</div> 
<script> 
    var app = angular.module('myApp', []); 
    app.service('hexafy', function() { 
     this.myFunc = function(x) { 
      return x.toString(16); 
     } 
    }); 
    app.filter('myFormat', ['hexafy', function(hexafy) { 
     return function(x) { 
      return hexafy.myFunc(x); 
     }; 
    }]); 

</script> 

フィルタはintialized値(FFとして255の番組)でうまく動作するようだが、その値がユーザーによって変更されたとき、フィルタが動作しません。 (たとえば、254は254と表示され、予想される 'fe'は表示されません)

これを修正するにはどうすればよいですか? また、私はAngularが初めてです。これはJSFiddleを初めて使用したときです。 HTMLからJSウィンドウ内のコードファイル/ sを参照する方法がわかりません。だから私はスクリプトタグの中にコードを入れました。代わりにJSウィンドウにあれば、srcからどのようにコードを参照するのですか?

コードは主にw2schoolsのAngularJSチュートリアルの例であることを付け加えておきます。私はユーザ入力を扱うかどうかを修正しました(これまでのところ成功しませんでした)。

答えて

2

numberと入力するか、parseIntと入力してください(hexafy.myFunc(parseInt(x));)。

+0

グレートを参照してください! type属性を "number"に設定するとうまくいきました。しかし、JSコードのどこにparseInt関数を使用する必要があるのか​​分かりません。フィルタとサービスを試してみました。どちらもうまくいかなかった。 また、2番目の質問(コードにJSペインを使用してそれを参照する)の助けをいただければ幸いです。 – PakiPat

+1

@PatrickGomesこれをチェックする、[demo](https://jsfiddle.net/1uso2pzb/) – ram1993

0

これは、ユーザーの入力後、値が文字列ではなく文字列であるためです。あなたはこれにそれを変更することができます

<input ng-model="my_number" type="number" /> 

jsfiddle

関連する問題