2015-09-04 40 views
0

我正在尝试查看用户是否已订阅计划,如果是,请检查相应的单选按钮。md-radio-button无法识别ng-checked

我有一组我要创建与NG-重复MD单选按钮:

  <md-radio-group class="md-primary" ng-model="plan"> 

     <div flex ng-repeat="planInfo in plans" class="plan-options"> 
      <md-radio-button value="{{planInfo._id}}" name="plan" class="md-primary" ng-checked="hasPlanID == planInfo._id" required> 

      <h2 class="plan-name">{{planInfo.name}}</h2> 

      <h3 class="plan-price">${{planInfo.price}}</h3> 

      </md-radio-button> 
     </div> 

     </md-radio-group> 

我有一个是越来越所有的从数据库中计划服务:

 //check to see if user already has a plan 
    MyService.GetPlan(currentUser.username).then(function (response) { 
    if (response.success) { 
     //This does resolve correctly 
     $scope.hasPlanID = response.data.plan; 

     MyService.GetAllPlans().then(function (response) { 
     if (response.success) { 
      //plans display properly 
      $scope.plans = response.data; 
     } else { 
      $log.debug(response.message); 
     } 
     }); 
    } else { 
     $log.debug(response.message); 
    } 
    }); 

注意HTML中的ng-checked属性。当我查看Chrome的检查器时,它会精确地吐出你在代码中看到的内容,ng-checked =“hasPlanID == planInfo._id”。

如何让它识别变量值并将实际表达式解析为true或false?

回答

0

您不必手动处理,办理入住手续。相反,填充$scope.hasPlanID财产刚刚成立$scope.plan目前的计划,就像这样:

//check to see if user already has a plan 
MyService.GetPlan(currentUser.username).then(function (response) { 
    if (response.success) { 
    //This does resolve correctly 
    $scope.plan = response.data.plan; 

    MyService.GetAllPlans().then(function (response) { 
     if (response.success) { 
     //plans display properly 
     $scope.plans = response.data; 
     } else { 
     $log.debug(response.message); 
     } 
    }); 
    } else { 
    $log.debug(response.message); 
    } 
}); 

因为你的模型设置为$scope.plan这应该然后自动处理检查:

<md-radio-group class="md-primary" ng-model="plan"> 
+0

我的回答看起来好像很无聊,谢谢! – sigmapi13

+0

没问题,我很高兴它解决了! – JimmyBoh

8

明白了。看起来像ng-checked不适用于md-radio-button,它只适用于html输入。您可以通过使用纳克级的指令,它可以评估一个表达式添加MD-检查类的MD-单选按钮元素:

<md-radio-button value="{{planInfo._id}}" name="plan" class="md-primary" ng-class="{'md-checked':$parent.hasPlanID == planInfo._id}" required> 
+0

这帮助我设置从我从数据库检索到的对象的单选按钮。谢谢 – Chisko

+0

对我来说,只是用ng-class =“{'md-checked':$ parent.hasPlanID == planInfo._id}不能正常工作”但你给了我这个线索,我试着用ng-class =“{'md '检查':$ parent.hasPlanID == planInfo._id}“,而不是值=”{{planInfo._id}}我试着用ng-init =“planInfo._id”,它的工作原理非常完美,所以谢谢 –

0
$scope.sel = 'lu'; 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<md-radio-group ng-model="sel" ng-change="logos()" ng-model="myValue" class="settings-radio-button" layout="row"> 
    <md-radio-button value="lu" ng-checked="true" class="md-primary">Upload With URL</md-radio-button> 
    <md-radio-button value="li" class="md-primary">Select Logo Image</md-radio-button> 
</md-radio-group> 
0

如果你想检查一个单选按钮为md-radio-button使用ng-value而不是value没有ng-checked例如将取决于planInfo._id值来选择

<md-radio-group class="md-primary" ng-model="plan"> 
    <div flex ng-repeat="planInfo in plans" class="plan-options"> 

     <md-radio-button ng-value="planInfo._id" name="plan" class="md-primary" ng-checked="hasPlanID == planInfo._id" required> 

     <h2 class="plan-name">{{planInfo.name}}</h2> 

     <h3 class="plan-price">${{planInfo.price}}</h3> 

     </md-radio-button> 

    </div> 

</md-radio-group> 

该代码段将建模的计划和相应的单选按钮的值。

希望这会有所帮助!