我正在尝试在每次聚焦时将输入大小从20更改为100。然后,当它模糊时,它应该从100转换为20.这是我的HTML代码:
<div ng-controller="MenuCtrl" class="navbar-collapse collapse bs-navbar-collapse navbar-ex1-collapse">
<input type="text" class="form-control" ng-blur="{[{ change_text_width() }]}" ng-focus="{[{ change_text_width() }]}" size="{[{search_text_width}]}" placeholder="Search">
</div>
在我的角度模块之前,我放了一个父模块:
var JobMaps = angular.module('JobMaps', ['MenuCtrl']);
这是我的角度代码:
var MenuCtrl = angular.module('MenuCtrl',[]);
MenuCtrl.controller = angular.module('MenuCtrl',function($scope) {
$scope.search_text_width = 20;
$scope.change_text_width = function() {
if ($scope.search_text_width==20) {
$scope.search_text_width = 100;
//alert($scope.search_text_width);
} else {
$scope.search_text_width = 20;
//alert($scope.search_text_width);
}
}
});
观察:
答案 0 :(得分:6)
在Angular世界中,您使用指令进行DOM操作。一个优点是您可以重复使用指令而无需额外的代码,并从控制器中分离UI内容。我为调整大小输入创建了一个plunker:Plunker
答案 1 :(得分:1)
我更改了属性size
,因为width
会影响使用Bootstrap时的响应能力。
MenuCtrl.directive('changeSize', function () {
return {
restrict: 'A',
link: function($scope, $element, $attributes) {
var onFocusSize = $attributes['changeSize'] || $element.attr('size');
var onBlurSize = $element.attr('size');
$element.focus(function() { $element.attr('size',onFocusSize); });
$element.blur(function() { $element.attr('size',onBlurSize); });
}
}
});