JSfiddle代码在底部
我的问题:如果<input>
字段中有空格,您就可以清除&#34;通过将其范围值设置为空字符串而使用angular的值,它会在输入字段中留下空格。
原因:我理解它为什么会这样做,因为角度摘要没有看到变化,因为由于修剪的空白通过ng-trim已经使范围变量为空
我的问题:是否有正确的方法来确保输入字段变空?我知道有多种解决方案,但所有这些解决方案都是黑客攻击或无法工作。
jsfiddle:https://jsfiddle.net/0kf84g5o/3/
<div ng-app=MyApp>
<div ng-controller="TestCtl">
Press "tabs and spaces", add spaces and/or tabs, and then press "blank out'<br>
<input ng-model=TestInput id=TestInput>
<input type=button value="abc" ng-click="ChangeTestValue('abc')">
<input type=button value="Tabs and spaces"ng-click="ChangeTestValue('\t \t')">
<input type=button value="Blank out" ng-click="ChangeTestValue('')">
<input type=button value="Null out" ng-click="ChangeTestValue(null);">
<pre>
Angular Value: --{{TestInput}}--
JSONified Angular Value: --{{TestInputJSON}}--
Actual input value JSONified: --{{TestInputActualJSON}}--
</pre>
</div>
</div>
var MyApp=angular.module('MyApp', []);
MyApp.controller('TestCtl', function($scope, $timeout) {
//Update the value programatically
$scope.TestInput='Start text';
$scope.ChangeTestValue=function(Str) {
$scope.TestInput=Str;
};
//Update TestInputJSON
$scope.$watch('TestInput', function(NewVal) { //When angular values changes
scope.TestInputJSON=JSON.stringify(NewVal);
});
//Update TestInputActualJSON
$scope.$watch('TestInput', function(NewVal) { //When angular value changes
$timeout(UpdateTestInputActualJSON, 1); //Wait for 1ms to update so the new value is alread set
});
$('#TestInput').on('keyup paste', UpdateTestInputActualJSON); //On a jquery event
function UpdateTestInputActualJSON(e) //Do the actual update of TestInputActualJSON
{
$scope.TestInputActualJSON=JSON.stringify($('#TestInput').val());
if(e) //Call angular digest if coming from jQuery
$scope.$apply();
}
});