Java スクリプト オブジェクトのプロパティを監視するという問題に直面しました。ここでこの問題について部分的に説明しましたが、解決策が得られませんでした...
問題を別の方法で説明します。ここにフィドルがあります
これが私のディレクティブのコードです:
var myApp = angular.module('myApp', []);
var ctrl = function($scope) {
$scope.amount = '0.00';
$scope.values = {
amount: 0.00
};
};
myApp.directive('currency', function($filter) {
return {
restrict: "A",
require: "ngModel",
scope: {
separator: "=",
fractionSize: "=",
ngModel: "="
},
link: function(scope, element, attrs) {
if (typeof attrs.separator === 'undefined' ||
attrs.separator === 'point') {
scope.separator = ".";
} else {
scope.separator = ",";
};
if (typeof attrs.fractionSize === 'undefined') {
scope.fractionSize = "2";
};
scope[attrs.ngModel] = "0" + scope.separator;
for(var i = 0; i < scope.fractionSize; i++) {
scope[attrs.ngModel] += "0";
};
scope.$watch(attrs.ngModel, function(newValue, oldValue) {
if (newValue === oldValue) {
return;
};
var pattern = /^\s*(\-|\+)?(\d*[\.,])$/;
if (pattern.test(newValue)) {
scope[attrs.ngModel] += "00";
return;
};
}, true);
}
};
});
そして、これは私のHTMLレイアウトです:
<div ng-app="myApp">
<div ng-controller="ctrl">
{{amount}}<br>
<input type="text" style="text-align: right;" ng-model="amount" currency separator="point" fraction-size="2"></input>
</div>
</div>
入力要素の値を外部コントローラーの項目にバインドしたいのですvalues.amount
が、ディレクティブの監視命令が機能しません...
実装したいロジックは次のとおりです。ユーザーがポイントを置いた場合、入力要素に余分なゼロを追加したい。入力要素の値が「42」で、ユーザーがそこにポイントを置いた場合、値は「42」になります。次に、この「42.00」のようにするには、2 つの余分なゼロを追加する必要があります。
ng-model="amount"
入力要素のデータを外部コントローラーの変数にバインドする場合、入力要素のロジックは機能しますが、外部コントローラーの金額値は更新されません。
バインディングに使用するng-model="values.amount"
と、外側のコントローラーの値も入力要素のロジックも機能しません。
values.amount
実際、入力要素を使用命令にバインドする必要がありますng-model="values.amount"
が、機能せず、理由がわかりません。
誰かがこの問題を解決するのを手伝ってくれますか? アイデアや提案はありますか?