2013-07-01 24 views
37

我使用这个字段的编辑视图和CREATE VIEW如何使用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 
} 

请帮忙。

+5

你需要使用[ng-disabled](http://docs.angularjs.org/api/ng.directive:ngDisabled) –

+0

@maqjav这个问题明确声明应该以AngularJS术语提供解决方案,而不是jQuery 。 – Stewie

+0

@Stewie你是对的。我删除了评论;) – maqjav

回答

11

您需要使用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

这是旧的,但你是第一个,并有完全相同的正确答案我不明白所有upvotes在其他答案 –

5

一个特殊的CSS类我创建了一个指令,这个(角稳定的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"); 
    }); 
    } 
}); 
+1

我必须使用角度1.0.8,它没有ng-禁用指令,所以这很有用! –

0
<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"); 
    }); 
    } 
}); 
+2

有点解释会有帮助。 – ouflak

0
<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"/> 
+0

有点解释会有帮助。 –

1

您的标记应包含一个附加属性,叫做NG-禁用,它的值应该是一个条件或表达式将评估为真或假。

<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指令的值。