Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果ng模型为空,如何为其赋值_Javascript_Angularjs - Fatal编程技术网

Javascript 如果ng模型为空,如何为其赋值

Javascript 如果ng模型为空,如何为其赋值,javascript,angularjs,Javascript,Angularjs,如果ng模型为空,我想为它赋值。我已将默认值分配给控制器中的ng模型输入,但当用户更改以删除该值并使输入为空时,我希望将默认值分配给ng模型 比如说 控制器: App.controller('mainController',['$scope', function($scope) { $scope.assignOne= 16; }]); 视图: 现在,输入值变为16 如果用户进行更改并手动删除此值16,则我希望在changeMe()函数中使用默认值1而不是空字符串 注: 我可以检查空n

如果ng模型为空,我想为它赋值。我已将默认值分配给控制器中的ng模型输入,但当用户更改以删除该值并使输入为空时,我希望将默认值分配给ng模型

比如说

控制器:

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;
      }
   }
}]);