Angularjs 如果输入大于60个字符,请使用textarea
我需要能够计数的字符输入使用角度 如果字符数大于60,则使用文本区域 我想我可以在我的脚本中这样做:Angularjs 如果输入大于60个字符,请使用textarea,angularjs,Angularjs,我需要能够计数的字符输入使用角度 如果字符数大于60,则使用文本区域 我想我可以在我的脚本中这样做: //my initial display value $scope.display = "this is a particularly long string that i'm using to test this functionality"; //storing the length of the display variable $scope.charCount = $scope.disp
//my initial display value
$scope.display = "this is a particularly long string that i'm using to test this functionality";
//storing the length of the display variable
$scope.charCount = $scope.display.length;
然后,我在ng if
条件中使用charCount
变量来确定是否使用输入
或文本区域
<div id="ctrl_{{field.id}}" ng-controller="controller" data-custom-focus="true" ng-if="charCount <= 60">
<input
type="text"
ng-bind="display"
ng-value="display">
</div>
<div id="ctrl_{{field.id}}" ng-controller="controller" data-custom-focus="true" ng-if="charCount > 60">
<textarea
type="text"
ng-bind="display"
ng-value="display" >
</textarea>
</div>
奇怪的是,这两个元素都没有呈现。我对Angular还不太熟悉,所以我不确定会出现什么问题 一些错误
- 您在中使用了
作为输入字段,这是 错误的使用方法ng bind
- 删除表单divs
ng controller=“controller”
display.length
,因为如果
试试这个
var-app=angular.module('app',[]);
app.controller('OneController',函数($scope){
$scope.display='ssss'
$scope.changedInput=函数(参数){
}
});
{{aa}}
计数:{display.length}
一些错误
- 您在中使用了
ng bind
作为输入字段,这是
错误的使用方法
- 删除表单divs
ng controller=“controller”
在视图中使用和而不是使用display.length
,因为如果
试试这个
var-app=angular.module('app',[]);
app.controller('OneController',函数($scope){
$scope.display='ssss'
$scope.changedInput=函数(参数){
}
});
{{aa}}
计数:{display.length}
将控制器用于父范围
您可以像这样使用它:
<div ng-controller="MyCtrl">
<div data-custom-focus="true" ng-if="charCount => 60">
<input
type="text"
ng-bind="display"
ng-value="display">
</div>
<div data-custom-focus="true" ng-if="charCount < 60">
<textarea
type="text"
ng-bind="display"
ng-value="display" >
</textarea>
</div>
</div>
将控制器用于父范围
您可以像这样使用它:
<div ng-controller="MyCtrl">
<div data-custom-focus="true" ng-if="charCount => 60">
<input
type="text"
ng-bind="display"
ng-value="display">
</div>
<div data-custom-focus="true" ng-if="charCount < 60">
<textarea
type="text"
ng-bind="display"
ng-value="display" >
</textarea>
</div>
</div>
只需从两个元素中删除ng controller=“controller”
。它应该会起作用
<div id="ctrl_{{field.id}}" data-custom-focus="true" ng-if="charCount <= 60">
<input type="text" ng-bind="display" ng-value="display">
</div>
<div id="ctrl_{{field.id}}" data-custom-focus="true" ng-if="charCount > 60">
<textarea type="text" ng-bind="display" ng-value="display">
</textarea>
</div>
只需从两个元素中删除ng controller=“controller”
。它应该会起作用
<div id="ctrl_{{field.id}}" data-custom-focus="true" ng-if="charCount <= 60">
<input type="text" ng-bind="display" ng-value="display">
</div>
<div id="ctrl_{{field.id}}" data-custom-focus="true" ng-if="charCount > 60">
<textarea type="text" ng-bind="display" ng-value="display">
</textarea>
</div>
您可以使用一个ng控制器
,并将输入/文本区域的条件置于该控制器的范围内
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.display=“这是我用来测试此功能的一个特别长的字符串”;
//存储显示变量的长度
$scope.charCount=$scope.display.length;
});代码>
您可以使用一个ng控制器
,并将输入/文本区域的条件置于该控制器的范围内
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.display=“这是我用来测试此功能的一个特别长的字符串”;
//存储显示变量的长度
$scope.charCount=$scope.display.length;
});代码>
为什么不在所有情况下都使用textarea,如果长度超过60,则在textarea中添加一行?这很有效。看这里@Satpal,因为我需要在两种情况下引用相同的控制器。我不是一个角度专家,所以如果你能建议一个更好的方法,我将不胜感激。ng controller
将创建一个新的范围,因此永远不会有两个实例same@Satpal谢谢你的建议,从长远来看,这对学习一门新语言很有帮助。你为什么不在所有情况下都使用textarea,如果长度超过60,你在文本区添加了一行吗?它正在工作。看这里@Satpal,因为我需要在两种情况下引用相同的控制器。我不是一个角度专家,所以如果你能建议一个更好的方法,我将不胜感激。ng controller
将创建一个新的范围,因此永远不会有两个实例same@Satpal谢谢你的建议,从长远来看,这对学习一门新语言是有帮助的。在这里没有任何区别。我们也可以使用charCount
。@AmitKumar那是我的错。现在检查我的答案:)这里没有任何区别。我们也可以使用charCount
。@AmitKumar那是我的错。现在检查我的答案:)就是这样,我没有意识到你不能引用同一个控制器两次。Cheers@MasterYoda祝您愉快师父:)就是这样,我没想到您不能引用同一个控制器两次。Cheers@MasterYoda祝您愉快大师:)干杯,Vivz我还没意识到您只需要引用控制器一次。@MasterYoda是的,声明一次,并将所有必需的代码放在该控制器的范围内就可以了。无论如何,很高兴能提供帮助:)干杯,Vivz我没有意识到你只需要引用控制器一次。@MasterYoda是的,声明一次并将所有必需的代码放在这个控制器的范围内就可以了。无论如何,很高兴能帮上忙:)谢谢你的帮助。你的建议真的很有帮助。谢谢你的帮助。你的建议真的很有帮助。