AngularJS指令 - 如何将$ attrs [" value"]转换为布尔值

时间:2016-02-01 19:33:02

标签: angularjs angularjs-directive

我正在使用我在网上找到的指令:

<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

我尝试过使用evalBoolean。但我相信这更像是一个与AngularJS指令相关的问题。任何帮助将不胜感激。

3 个答案:

答案 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