更改Angular表单上的$ scope变量复选框更改

时间:2015-10-11 23:57:34

标签: javascript angularjs

我在$ scope $scope.some_val上设置了一个变量,我希望在表单提交时更新,具体取决于是否选中了复选框。

我希望保留原始值some_val,但只有在用户点击提交时才会更新。{p>

我试过了:

ng-model="some_model.some_val" ng-true-value="new_val" ng-false-value="{{ some_model.some_val }}"

因为我希望保留原始值但这并不起作用。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

似乎Angular不接受ng-true-valueng-false-value属性中的非常量表达式,如this doc中所述。

我邀请您尝试的是简单地在表单后面的控制器中对常规JavaScript变量中的默认值进行硬编码。在用户提交时,只需检查是否已选中该复选框,如果是,则更新该值。如果不是 - 将其重新分配给硬编码的JS var。

以下是工作代码,这里是plunker



// Code goes here
var app = angular.module('app', []);
app.controller('controller', function($scope){
  var origin_value = 'original value';
  $scope.some_val = origin_value;
  $scope.submit = function(input){
    if(input.checkbox) 
      $scope.some_val = input.text;
    else
      $scope.some_val = origin_value;
  };
});

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="style.css">
  <script src="http://apps.bdimg.com/libs/angular.js/1.4.0-beta.4/angular.min.js"></script>
  <script src="script.js"></script>
</head>

<body ng-app="app" ng-controller="controller">
  <code>{{some_val}}</code>
  <form novalidate>
    <input ng-model="input.text" name="input" type="text" /><br/>
    Update some_val? <input type="checkbox" value="checked" ng-model="input.checkbox" name="checkbox" required="" /><br/>
    <input type="submit" ng-click="submit(input)" value="save"/>
  </form>
</body>

</html>
&#13;
&#13;
&#13;

谢谢你,祝你有愉快的一天!