我正在使用我在网上找到的指令:
<input icheck type="radio" ng-model="vm.isEmployed" value="true" /> Yes
<input icheck type="radio" ng-model="vm.isEmployed" value="false" /> No
指令是这样的:
function icheck($timeout) {
return {
restrict: "A",
require: "ngModel",
link: function ($scope, element, $attrs, ngModel) {
return $timeout(function () {
var value;
value = $attrs["value"];
我遇到的问题是$attrs["value"]
始终是string
,但我的ngModel中的属性是boolean
。
我尝试过使用eval
和Boolean
。但我相信这更像是一个与AngularJS指令相关的问题。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以评估属性:
value = $scope.$eval($attrs.value);
答案 1 :(得分:1)
您可以在标签中添加truthy / falsy值以澄清事情----
ng-true-value="'true'" ng-false-value="'false'"
答案 2 :(得分:0)
解决方案是使用ng-value
代替value
。来自https://docs.angularjs.org/api/ng/input/input%5Bradio%5D的文档:
如果需要,应使用ng-value代替value属性 非字符串ngModel(布尔值,数组,...)。
所以我将视图更改为:
<input icheck type="radio" ng-model="vm.isEmployed" ng-value="true" /> Yes
<input icheck type="radio" ng-model="vm.isEmployed" ng-value="false" /> No