2017-10-02 7 views
1

を持っているときから、特定の選択したテキストの取得:私は、次のようmd-select内のこの配列を使用していMD-選択するオプションは、私は、オブジェクトのこの配列を持っている多くのキー

[ 
    { 
      name: "Dubai", 
      transformed_cost: 50, 
      delivery_time: 30 
    }, 
    { 
      name: "Abu Dhabi", 
      transformed_cost: 15, 
      delivery_time: 7 
    }, 
    { 
      name: "Shariqah", 
      transformed_cost: 50, 
      delivery_time: 4 
    } 
] 

を:

<md-select ng-model='delivery_zone' md-selected-text="getSelectedText()"> 
    <md-optgroup label="Destinatios"> 
     <md-option ng-repeat='z in deliveryZones'> 
      <div flex layout='row' layout-align="space-between" > 
       <span>{{ z.name}}</span> 
       <span>{{z.transformed_cost}} AED</span> 
       <span style="display: block;">Delivery in: {{ z.delivery_time}}</span> 
      </div> 
     </md-option> 
    </md-optgroup> 
</md-select> 

私が使用しているgetSelectedText()機能:

$scope.getSelectedText = function() { 
    if ($scope.delivery_zone !== undefined) { 
     return $scope.delivery_zone; 
    } 
    else { 
     return "Please select a destenation"; 
    } 
}; 
私はtransformed_costとdelivery_timeのないオプションだけ キー(ドバイ、アブダビ)の内側にプリントアウトする必要が enter image description here

:あなたがここに見ることができるように

は、それは全体のオプションを返します。

どうすればいいですか?

+0

こんにちは私はあなただけのコメント答え以下の何かをしたい場合ので、私はそれを修正することができ、確認してください以下の答えを追加しました。 –

答えて

1

私は問題がのmd-optionにありますので、ng-repeatが表示されています。解決策は次のとおりです。

最初ににng-valueを追加します。

<md-option ng-repeat='z in deliveryZones' ng-value="z"> 

次に、この関数をに変更する必要があります。

$scope.getSelectedText = function() { 
    if ($scope.delivery_zone !== undefined) { 
     return $scope.delivery_zone.name; 
    } 
    else { 
     return "Please select a destenation"; 
    } 
}; 

ここでは同じもののデモです!

JSFiddle Demo

私は、あなたが関数自体を必要としない、あなただけのようにそれを書くことができることをコメントしたいと思います。

<div ng-app='home' ng-controller="MainCtrl"> 
    <md-select ng-model='delivery_zone' md-selected-text="delivery_zone()"> 
    <md-optgroup label="Destinatios"> 
     <md-option ng-repeat='z in deliveryZones'> 
     <div flex layout='row' layout-align="space-between"> 
      <span>{{ z.name}}</span> 
      <span>{{z.transformed_cost}} AED</span> 
      <span style="display: block;">Delivery in: {{ z.delivery_time}}</span> 
     </div> 
     </md-option> 
    </md-optgroup> 
    </md-select> 
</div> 

JSFiddle Demo

0

こんにちは私は排除するためにオプトイン変数を追加しました

$scope.getSelectedText = function(selectedVal) { 
    if (selectedVal !== undefined) { 
     return selectedVal.name; 
    } 
    else { 
     return "Please select a destenation"; 
    } 
}; 

JSこの

<md-select ng-model='delivery_zone'> 
    <md-optgroup label="Destinatios"> 
    <md-option ng-value="opt" ng-repeat='opt in deliveryZones' ng-click="getSelectedText(opt)"> 
     <div flex layout='row' layout-align="space-between" > 
     <span>{{ z.name}}</span> 
     <span>{{z.transformed_cost}} AED</span> 
     <span style="display: block;">Delivery in: {{ z.delivery_time}}</span> 
     </div> 
    </md-option> 
    </md-optgroup> 
</md-select> 

を試してみてください

return $scope.delivery_zone.name; 
1

のようなあなたの関数から単純名を返すことができます複製。それに加えて、親md-selectのng-changeではなく特定のオプションをng-clickしています。これがあなたの問題を解決することを願っています。

関連する問題