2

ng-model の値が式で更新されない理由。ng-model が定義される前に値が更新されます

値は、フェーズ 2 またはフェーズ 3 が変更されるとすぐに更新されます

<input type="text" name="phase1" value="{{phase2 - phase3}}" ></input>

値は更新されません

<input type="text" name="phase1" value="{{phase2 - phase3}}" ng-model="phase1"></input>

そこで、ディレクティブ内の式を評価し、出力をモデルに更新するディレクティブを作成することを考えています。

ここにHTMLがあります

<input type="text" name="phase1" ng-model="phase1" my-value="{{phase2 - phase3}}" my-model-value></input>

指令:

myApp.directive('myModelValue', function(){
return {
            restrict: 'A',
            require: 'ngModel',
            scope: {
                model: '=ngModel',
                value: '@myValue'
            },
            link: function (scope, element, attr, controller) {
                scope.model = scope.value;
            }
        };

});

このディレクティブはロード時にのみ評価されますが、依存フィールド (フェーズ 2 とフェーズ 3) の変更を継続的に更新/監視したいと考えています。

コントローラーから値を更新できますが、html から行いたいです。私を助けてください。

4

3 に答える 3

2

みんなありがとう、私がやりたかったことを理解しました。これが私の最後のシンプルだが便利なディレクティブです:)

app.directive('myModelValue', function () {
        return {
            restrict: 'A',
            require: 'ngModel',
            scope: {
                model: '=ngModel'
            },
            link: function (scope, element, attr, controller) {
                attr.$observe('myModelValue', function (finalValue) {
                    scope.model = finalValue;
                });
            }
        };
    });

使用法:

<input type="text" ng-model="phase1" my-model-value="{{phase2 - phase3}}"></input>
<input type="text" ng-model="phase1.name" my-model-value="{{valid angular expression}}"></input>
于 2014-07-18T07:48:29.147 に答える