如果值为空,如何为ng-model赋值

时间:2015-12-23 11:07:27

标签: javascript angularjs

我想为ng-model分配值,如果它是空的。我已经为控制器的ng-model输入分配了默认值,但是当用户进行更改以删除该值并使输入为空时,我想将默认值分配给ng-model。

例如。

控制器:

App.controller('mainController',['$scope', function($scope) {
   $scope.assignOne= 16;
}]);

查看:

<input ng-model="assignOne" ng-change="changeMe()"/>

现在,输入值变为16.

如果用户进行了更改并手动删除了该值16,那么我想在changeMe()函数中使用默认值1而不是空字符串。

注意: 我可以检查空ng模型并覆盖控制器中ng-model的值。但是,有没有更好的使用方式,角度提供的东西。

我是AngularJS的新手。

2 个答案:

答案 0 :(得分:1)

尝试$watch如下

$scope.$watch(
   "assignOne",
    function handleChange( newValue, oldValue ) {
          console.log( "assignOne:", newValue );
          if(newValue == '') {
             newValue = 16;
          }
    }
);

答案 1 :(得分:0)

满足您样本的另一种解决方案:

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”var,而只会更改本地副本,它会在函数调用结束时丢失...通过更改来纠正它$ scope.assignOne!

PS 2:2解决方案很好,但可以解决不同的要求:

  • $ watch就像是模型对象的触发器,如果​​你想在导航器端检查业务规则,它是最有效的

  • ng-change对于处理一些不是严格规则的交互更有意思......

可以使用两种方式......