2015-09-04 75 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> 

該代碼段將建模的計劃和相應的單選按鈕的值。

希望這會有所幫助!