2016-04-04 50 views
0

我正在使用md-switch在Angular應用程序中顯示切換。當我點擊該線路時,在任何地方,交換機都會切換。但是我已經在其他控件上使用了開關,所以我只希望它在實際開關被點擊時切換,而不是其他控件。我如何指導它行爲如此?防止md-switch切換點擊線

段:

<md-list-item class="md-1-line" ng-repeat="rule in vm.rules | filter:{name:groupedRule.name}"> 
<div style="width: 40px;">{{rule.threshold}}</div> 
<div flex> 
    <md-slider min="10" max="40" ng-model="rule.threshold"> 
    </md-slider> 
</div> 
<div style="width: 40px;"> 
    <md-switch ng-model="rule.enabled"></md-switch> 
</div>      

更新 這裏的代碼演示筆的問題:http://codepen.io/jsiegmund/pen/repwyR

更新GitHub上 問題#7937:https://github.com/angular/material/issues/7937#issuecomment-207793522

+1

通過固定的代碼。它在哪裏? –

+0

@JBNizet添加了它。 – Jasper

回答

1

你可以用div取代md-list-item - CodePen

標記

<div ng-controller="SwitchDemoCtrl" ng-app="MyApp"> 
    <md-list> 
    <div layout="row" layout-align="center center"> 
     <div style="width: 40px;"> {{ data.threshold }} </div> 
     <div flex> 
     <md-slider min="10" max="30" step="1" ng-model="data.threshold"> 
     </md-slider> 
     </div> 
     <div layout-align="end center" flex-offset="5"> 
     <md-switch ng-model="data.cb1" aria-label="Switch 1"> 
      Switch 1: {{ data.cb1 }} 
     </md-switch> 
     </div> 
    </div> 
    </md-list> 
</div> 
+0

這解決了它,但你也許也知道爲什麼? – Jasper

+0

@Jasper *我想*這是因爲md-list-item將點擊事件傳播給交換機。我創建了一個示例(http://codepen.io/camden-kid/pen/pypZRK?editors=1010),如果有幫助,點擊滑塊不會影響交換機。如果是這樣,我可以改變我的答案。我發現有時候不使用一些Angular Material指令可以提供更多的控制。 –

+0

很酷,謝謝!問題解決了 :) – Jasper