我有一个文本框,如果ng-model包含负值,我想在文本框中不显示任何内容,我想保留ng-model。如果数据为负值则不应显示数据,如果值为负,则我想在文本框中显示空白,但ng-model应包含该负值。我需要一个自定义过滤器来实现此功能
router.post('/httpOnly/mkdir', function (req, res, next) {
var fs = require('fs');
var dir = req.body.dir;
fs.mkdir(dir, 0777, function (err) {
if (err) {
if (err.code === "EEXIST") console.log("folder exists")
else return console.log(err)
};
res.json(dir);
});
});
答案 0 :(得分:2)
Filters can be added in AngularJS to format data.
现在,如果您正在考虑将“ngModel
与文本框绑定”并希望对其应用过滤器(即标记:<input ng-model="number | nonNegative" />
),请自行尝试,您将获得在fiddle
错误:不可分配的模型表达式:number | nonNegative()
当您想要显示以下值时,使用过滤器,您将能够这样做。
angular.module('myApp', [])
.controller('LoginController', function ($scope) {
$scope.number = -10;
$scope.number1 = -20;
$scope.number2 = 30;
})
.filter('nonNegative', function(){
return function(val){
if(val >= 0) return val; else '';
}
})
HTML:
Number: {{number | nonNegative}}
<br/>
Number1: {{number1 | nonNegative}}
<br/>
Number2: {{number2 | nonNegative}}
---- ----- EDIT
即使您使用$watch
,实际值也会有所不同,文本框中的值也会不同
请检查此fiddle
angular.module('myApp', [])
.controller('LoginController', function ($scope) {
$scope.number1 = -20;
$scope.$watch('number1', function(newVal, oldVal) {
if(newVal < 0) newVal = '';
})
})
HTML
<div ng-app="myApp" ng-controller="LoginController">
<input type = "text" ng-model="number1" />
<input type="submit" ng-click="login()" value="Login" />
<br/>
Number1: {{number1 | nonNegative}}
</div>
number
字段没有值,正如您在小提琴中看到的那样,但文本框仍显示负值