[angularjs在相应的HTMLinput上调用select不会突出显示单元格内容,如果值来自ng-model?

问题描述 投票:0回答:1

我试图在输入元素中选择(突出显示)其值来自模型的文本,但这似乎不起作用。

有问题的元素(组件模板的一部分)如下:

<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();
};

我在页面上看到的结果是这样的:

cursor at end

我想看的是这个:

selected stuff

这是控制台输出:

HTMLInputElement
budget_controller.source.js:261 inputFocus called.  contents:  

所以看起来问题是ng-focus可能在输入框的值由ng-model填充之前被调用,这就是.select()没有突出显示任何内容的原因。

或者也许还有其他东西?无论如何,一旦元素绑定成焦点,AngularJs中是否还有其他生命周期事件可以用来设置选择范围?我在Dox中看不到任何东西ngBound =。

angularjs
1个回答
0
投票

使用事件目标:

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();
};

DEMO on PLNKR

© www.soinside.com 2019 - 2024. All rights reserved.