使用angular.isDefined的Angularjs-ng-disabled不起作用

时间:2016-01-15 21:33:23

标签: javascript angularjs

当我打开kendo窗口时,我正在尝试根据后端的值启用/禁用单选按钮。我在HTML中使用了ng-disabled angular.isDefinedangular.isUndefined,但它无效。这是我的代码如下。 根据下面的后端数据,应禁用此渐进式单选按钮。

<div class="col-md-6 zero-left-padding ligther" style="margin-left:-107px;">
    <label for="progressive">
        <input type="radio" id="progressive" name="version" 
                ng-model="adhocTranscode.version" ng-value="24" 
                ng-disabled="{{angular.isUndefined(jobDetails.aes_data.instance_type_urlmap.nonlinear-progressive) &&                                     angular.isDefined(jobDetails.aes_data.instance_type_urlmap.broadcast) }}"/>
        <span style="font-weight:lighter;">Progressive &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
    </label>

后端JSON对象:

"aes_data" : {
     "instance_type_urlmap" : {
      "broadcast" : "file://int/edam/mbr/broadcast/0067/0067031_CQ-0101_I.MXF"
    }

1 个答案:

答案 0 :(得分:0)

一种方法是将其更改为以下代码:

 <input type="radio" id="progressive" name="version" 
                ng-model="adhocTranscode.version" ng-value="24" 
                ng-disabled="jobDetails.aes_data.instance_type_urlmap.nonlinear-progressive === undefined &&                                     jobDetails.aes_data.instance_type_urlmap.broadcast !== undefined }}"/>

请注意, angular.isUndefined 已替换为 === undefined ,并且 angular.isDefined 已被替换通过 !== undefined

问题可能是在html上下文中未定义angular。如果想要使用angular.isDefined或angular.isUndefined,则将结果赋值给变量,然后在html中使用变量。

JS:

var vm = this;
vm.result = angular.isDefined(someVariable);//false
vm.result2 = angular.isUndefined(someVariable);//true

HTML:

<input ng-disable="vm.result"></input><!--Enabled-->
<input ng-disable="vm.result2></input><!--Disabled-->

Angularjs isDefined API