ng-metadata @Directive:如何设置输入值?

时间:2017-05-13 22:17:53

标签: angularjs angularjs-directive

我有一个非常简单的指令,它应该更新模糊的输入值。

模糊处理程序正在调用,但我无法设置输入值。

import {NgModel} from 'ng-metadata/common';
import {Directive, Inject, Self, HostListener} from 'ng-metadata/core';

@Directive({
  selector: 'foo'
})
export class FooDirective {
  constructor(
    private @Self() ngModel: NgModel,
    private @Inject('$element') $element: ng.IAugmentedJQuery
  ) {}

  @HostListener('blur')
  onBlur() {
    this.ngModel.$viewValue = "FOO";
    this.ngModel.$modelValue = "FOO";
    this.ngModel.$setViewValue("FOO");
    this.ngModel.$commitViewValue();
    // I guess, I just need one of these, but none did work
  }
}

HTML代码:

<input type="text" foo ng-model="$ctrl.abc"></input>

我可以使用console.log(this.ngModel.$modelValue)读取当前值,但我无法设置新值。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

知道了!

这很简单:

this.ngModel.$setViewValue("FOO");
this.ngModel.$render();