Javascript 如果ng模型为空,如何为其赋值
如果ng模型为空,我想为它赋值。我已将默认值分配给控制器中的ng模型输入,但当用户更改以删除该值并使输入为空时,我希望将默认值分配给ng模型 比如说 控制器:Javascript 如果ng模型为空,如何为其赋值,javascript,angularjs,Javascript,Angularjs,如果ng模型为空,我想为它赋值。我已将默认值分配给控制器中的ng模型输入,但当用户更改以删除该值并使输入为空时,我希望将默认值分配给ng模型 比如说 控制器: App.controller('mainController',['$scope', function($scope) { $scope.assignOne= 16; }]); 视图: 现在,输入值变为16 如果用户进行更改并手动删除此值16,则我希望在changeMe()函数中使用默认值1而不是空字符串 注: 我可以检查空n
App.controller('mainController',['$scope', function($scope) {
$scope.assignOne= 16;
}]);
视图:
现在,输入值变为16
如果用户进行更改并手动删除此值16,则我希望在changeMe()函数中使用默认值1而不是空字符串
注:
我可以检查空ng模型,并覆盖控制器中ng模型的值。但是,有没有更好的方法来使用angular提供的东西呢
我刚刚接触AngularJS。尝试
$watch
如下
$scope.$watch(
"assignOne",
function handleChange( newValue, oldValue ) {
console.log( "assignOne:", newValue );
if(newValue == '') {
newValue = 16;
}
}
);
满足您的示例的另一种解决方案:
App.controller('mainController',['$scope', function($scope) {
$scope.assignOne= 16;
// function called by " ... ng-change="changeMe() "
$scope.changeMe = function() {
if ($scope.assignOne == '') {
$scope.assignOne = 1;
}
}
}]);
PS:对于前面的答案,有一点遗漏:它没有更改“assignOne”变量,只是一个本地副本,在函数调用结束时丢失了它。。。通过更改$scope.assignOne来更正它
PS 2:这两种解决方案都很好,但可以解决不同的需求:
- $watch类似于模型对象上的触发器,如果您希望在navigator端检查业务规则,它是最有效的
- ng更改对于处理一些不严格规则的交互更有趣
这两种方法都可以使用…解释你的答案。我完成了JS示例
App.controller('mainController',['$scope', function($scope) {
$scope.assignOne= 16;
// function called by " ... ng-change="changeMe() "
$scope.changeMe = function() {
if ($scope.assignOne == '') {
$scope.assignOne = 1;
}
}
}]);