我试图在输入元素中选择(突出显示)其值来自模型的文本,但这似乎不起作用。
有问题的元素(组件模板的一部分)如下:
<input id="table-input-cell" ng-blur="$ctrl.inputBlur()"
ng-focus="$ctrl.inputFocus($event)" ng-model="$ctrl.activeText"
class="input-cell"/>
控制器功能看起来像这样:
ctrl.inputFocus = function(focusEvent) {
let el = ctrl.inputView[0];
console.log(el.constructor.name);
console.log(`inputFocus called. contents: ${el.value} `);
el.select();
};
我在页面上看到的结果是这样的:
我想看的是这个:
这是控制台输出:
HTMLInputElement
budget_controller.source.js:261 inputFocus called. contents:
所以看起来问题是ng-focus
可能在输入框的值由ng-model
填充之前被调用,这就是.select()
没有突出显示任何内容的原因。
或者也许还有其他东西?无论如何,一旦元素绑定成焦点,AngularJs中是否还有其他生命周期事件可以用来设置选择范围?我在Dox中看不到任何东西ngBound =。
使用事件目标:
ctrl.inputFocus = function(focusEvent) {
̶l̶e̶t̶ ̶e̶l̶ ̶=̶ ̶c̶t̶r̶l̶.̶i̶n̶p̶u̶t̶V̶i̶e̶w̶[̶0̶]̶;̶
let el = focusEvent.target;
console.log(el.constructor.name);
console.log(`inputFocus called. contents: ${el.value} `);
el.select();
};