请注意这个例子:
<div ng-controller="myCtrl">
var ng-model = {{myValue}} - {{myType}}
<input type="radio" value="true"
name="boolean" ng-change="logIt()" ng-model="myValue" /> True
<input type="radio" value="false"
name="boolean" ng-change="logIt()" ng-model="myValue" /> False
</div>
var myApp = angular.module('myApp',[]);
function myCtrl($scope)
{
$scope.myValue = true; //does not work
//$scope.myValue = 'true'; //it does work
$scope.myType =(typeof $scope.myValue);
$scope.logIt=function(){
$scope.myType =(typeof $scope.myValue);
}
}
如您所见,最初 typeof 是 bool 类型,但在选择一个值后它变为字符串,并且 true 不等于“true”。有什么办法可以使 Angular 保留原始类型。
在这一点上,我正在考虑编写自己的指令来控制这种行为,但是 Angular 改变原始类型看起来不正确,我说得对吗?
最佳答案
使用 ng-value
和 angular 将处理转换回 bool 值:
这是 updated jsfiddle .
和强制性代码:
<div ng-controller="myCtrl">
<h1>Sample 1- Booleans</h1>
var ng-model = {{myValue}} - {{myType}}
<br />
<input type="radio" ng-value="true" name="boolean" ng-change="logIt()" ng-model="myValue" /> True
<input type="radio" ng-value="false" name="boolean" ng-change="logIt()" ng-model="myValue" /> False
</div>
关于javascript - 单选按钮中的 ng-model 类型更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20248833/