Angularjs 打开AngularUI模式时,在其输入字段中选择文本

Angularjs 打开AngularUI模式时,在其输入字段中选择文本,angularjs,angularjs-directive,angular-ui,angular-ui-bootstrap,Angularjs,Angularjs Directive,Angular Ui,Angular Ui Bootstrap,我正在我的应用程序中使用。模式包含预先填充了某些值的输入字段。 请求:打开模式时,应选择该输入字段中的文本 我已经为所选文本输入制定了指令,我得到的最远结果是,当根据答案单击输入时选择所有文本,这很好,但当打开模式时,我需要该功能 我已经在那个模态实例中看到了“打开”承诺,但在那个块中我无法访问输入 模式对话框: var modalInstance = $modal.open({ templateUrl: 'app/main/templates/dialogs/share-dialog.tpl

我正在我的应用程序中使用。模式包含预先填充了某些值的输入字段。 请求:打开模式时,应选择该输入字段中的文本

我已经为所选文本输入制定了指令,我得到的最远结果是,当根据答案单击输入时选择所有文本,这很好,但当打开模式时,我需要该功能

我已经在那个模态实例中看到了“打开”承诺,但在那个块中我无法访问输入

模式对话框:

var modalInstance = $modal.open({

templateUrl: 'app/main/templates/dialogs/share-dialog.tpl.html',
controller: function ModalCtrl($scope, $modalInstance, item) {

    $scope.ok = function () {

        $modalInstance.dismiss('cancel');
    };

    $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
    };

},
resolve: {
    item: function () {
        return item;
    }
}
});
带有select指令的模板零件:

<input ng-model="shareLink" type="text" class="form-control" id="share" selected-text >
var SelectedText = function () {
    return {
        restrict: 'A',
        link: function(scope, element, attrs){
            element.on('click', function () {
                this.select();
            });
        }
    };
};

return SelectedText;

我认为以下指令将解决您的问题:

app.directive("selectImmediately", function($timeout) {
  return {
    restrict: "A",
    link: function(scope, iElement) {
      $timeout(function() { // Using timeout to let template to be appended to DOM prior to select action.
        iElement[0].select()
     });
    }
  }
});
用法:

<input ng-model="name" type="text" class="form-control" id="share" select-immediately >


可以看到plnkr中的完整示例。您可以在任何地方使用此指令。

至少共享您的代码通常更喜欢
ng click
,以支持jQuery样式的手动事件添加。假设模式对话框中有HTML,您可以共享所有相关HTML吗?这回答了问题-选择加载时的文本-而不是单击时的文本。