2016-04-12 33 views
0

ng-repeat ile bir radyo düğmeleri tablosu oluşturan bir açısal uygulaması var. Seçmek ve değeri bir yerde saklamak için tablo satırına veya radyo düğmesine tıklamak istiyorum. Sorun şu ki, sadece radyo düğmesini seçtiğimde ve satırı tıklattığımda çalışmıyor. Ayrıca, herhangi bir zamanda sadece 1 radyo düğmesinin seçilebileceği bir yere sahip olmak istiyorum. Ben tüm radyo düğmeleri bile stopPropagation() kullanıyorum gerçi seçilir bu kodu çalıştırdığınızdaKöşeli raptiye düğmeleri, radyo düğmeleri

var app = angular.module('myApp',[]); 

var selectedRow; 

MyCtrl.prototype.toggleSelectedRow = function($event, selectedId) { 
    var _this = this; 
    $event.stopPropagation(); 
    selectedRow = selectedId; 
}; 

MyCtrl.$inject = ['$scope', '$log', '$http', '$sce']; 
app.controller('MyCtrl', MyCtrl); 

:

<tr class="info" ng-repeat="id in ctrl.ids" 
    ng-click="id.isChecked=!id.isChecked; 
    ctrl.toggleSelectedRow($event, id)"> 
    <td> 
     <input type="radio" 
       ng-model="id.isChecked" 
       ng-click="ctrl.toggleSelectedRow($event, id)"/> 
     <a>{{id}}</a> 
    </td> 
</tr> 

İşte benim açısal kod: İşte benim html bu. Radyo düğmesinden ziyade tablo satırına tıklamak, bilgiyi kaydeder ancak kullanıcının görmesi için radyo düğmesini seçmez. Ne yaptığım hakkında bir fikrin var mı?

Düzenleme 1: İşte benim problem yeniden üreten bir plunker bu. Doğrudan radyo düğmesi yerine tablo satırına tıkladığınızda radyo düğmesinin seçilmesi dışında çoğunlukla herşeyi çalıştım.

+0

Kodunuzun daha fazlasını gösterebilir misiniz? Sanırım genel bir yanlış anlamanız var ... 'MyCtrl.prototype' kontrol cihazınızın prototipinde bir yöntem ayarlaması, işlerin açısal bir yolu değildir. – kabaehr

cevap

1

Tablo satırını da tıklatarak radyo düğmenizi değiştirmek için, <tr> masaüstünde bir tıklama işleyicisi ekleyebilirsiniz.

<tr ng-repeat="item in main.items" ng-click="main.selectedItem=item"> 

senin plunker güncellenmiş sürümü here bulunabilir: Aşağıdaki kodla plunker düzenlenebilir.

0

İsim niteliklerini radyo düğmelerinize eklemelisiniz. Sonra birden fazla eleman

<input type="radio" 
       name="myRadioButton" 
       ng-model="id.isChecked"/> 

Ne fonksiyon toggleSelectedRow içinde yapmak istiyorsunuz seçildiğini, sorun yok()?

Seçiminizi tamamladıysanız, dizi ids arasında geçiş yapabilir ve kontrol edilen öğeyi alabilirsiniz. O zaman bazı fonksiyonları çağırmak zorunda değilsiniz.

+0

Bunu denedim ama bu, başlangıçta seçili olan tüm radyo düğmeleriyle sonuçlandı. Ne demek istediğini göstermek için bir plunker veya bir şey sağlayabilir misin? – Richard

+0

Sorunumu yeniden üretmek için bir [plunker] (https://plnkr.co/edit/QMfC4ar8WrGRHbBk6gyR?p=preview) yaptım – Richard