Как отключить поле ввода с помощью angular.js
Я использую это поле для просмотра вида и представления вида
<input data-ng-model="userInf.username" class="span12 editEmail" type="text" placeholder="[email protected]" pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}" required />
в контроллере у меня есть этот код, чтобы отключить входной элемент:
function($rootScope, $scope, $location, userService)
{
//etc
$(".editEmail" ).attr("disabled", disable); // no idea how to do in angular
}
Пожалуйста, помогите.
Ответы
Ответ 1
Используйте ng-disabled или специальный класс CSS с ng-class
<input data-ng-model="userInf.username"
class="span12 editEmail"
type="text"
placeholder="[email protected]"
pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}"
required
ng-disabled="{expression or condition}"
/>
Ответ 2
Вам нужно использовать ng-disabled
<input data-ng-model="userInf.username"
class="span12 editEmail"
type="text"
placeholder="[email protected]"
pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}"
required
ng-disabled="<expression to disable>" />
Ответ 3
Я создал для этого директиву (angular stable 1.0.8)
<input type="text" input-disabled="editableInput" />
<button ng-click="editableInput = !editableInput">enable/disable</button>
app.controller("myController", function(){
$scope.editableInput = false;
});
app.directive("inputDisabled", function(){
return function(scope, element, attrs){
scope.$watch(attrs.inputDisabled, function(val){
if(val)
element.removeAttr("disabled");
else
element.attr("disabled", "disabled");
});
}
});
Ответ 4
Ваша разметка должна содержать дополнительный атрибут ng-disabled, чье значение должно быть условием или выражением, которое будет оцениваться как истинное или ложное.
<input data-ng-model="userInf.username" class="span12 editEmail"
type="text" placeholder="[email protected]"
pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}"
required
ng-disabled="{condition or expression}"
/>
И в контроллере у вас может быть код, который повлияет на значение директивы ng-disabled.
Ответ 5
<input type="text" input-disabled="editableInput" />
<button ng-click="editableInput = !editableInput">enable/disable</button>
app.controller("myController", function(){
$scope.editableInput = false;
});
app.directive("inputDisabled", function(){
return function(scope, element, attrs){
scope.$watch(attrs.inputDisabled, function(val){
if(val)
element.removeAttr("disabled");
else
element.attr("disabled", "disabled");
});
}
});
Ответ 6
<input data-ng-model="userInf.username" class="span12 editEmail" type="text" placeholder="[email protected]" pattern="[^@][email protected][^@]+\.[a-zA-Z]{2,6}" required ng-disabled="true"/>