Angularjs:如何在页面加载时预先选择输入文本字段?

时间:2015-01-28 11:22:00

标签: javascript angularjs

我的角度应用程序中有一个简单的文本输入字段,预先填入默认值。我想在页面加载时预选文本。

输入字段:

<input type="text" ng-model="city" class="form-control" select-on-load />

指令:

weatherApp.directive('selectOnLoad', function () {
// Linker function
return function (scope, element, attrs) {
    element.bind('load', function () {
        this.select();
    });
};

});

但没有任何反应。

3 个答案:

答案 0 :(得分:0)

this question的答案表明输入元素没有load个事件。但是,也许你可以在view content has loaded

后附上句柄
$scope.$on('$viewContentLoaded', function(){
    // Set a flag
  });

它不像指令那样整洁,但它是我所知道的最简单的替代品。该事件设置了一个标志,该元素使用ng-focus取决于该标志,并且您的原始指令可以更新以监听焦点,而不是加载。


编辑:我已经做了一些搜索,但却无法找到更好的选择。它确实感觉很像黑客,所以我欢迎任何有更好建议的人。

答案 1 :(得分:0)

超级晚,但是您可以使用JS轻松完成此操作。在您的控制器内部...

Example...

然后在html ID中,您将获得一个带有匹配ID的输入标签

Easy peasy

希望有帮助!

答案 2 :(得分:-1)

试试这个。

function selectOnLoadDirective() {
  return {
    link: function(scope, elem) {
      elem.focus().select();
    }
  };
}