我在$ 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 }}"
因为我希望保留原始值但这并不起作用。 我怎么能这样做?
答案 0 :(得分:0)
似乎Angular不接受ng-true-value
和ng-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;
谢谢你,祝你有愉快的一天!