2016-11-02 1 views
1

Ich habe 3 Spalten von Radio Dropdown-Boxen. Ich habe Logik, wo, wenn ein Benutzer einen Radiobutton in Spalte 1 auswählt, die Radioknöpfe in Spalte 2 mit einer neuen Liste aktualisiert werden. Ich möchte immer die oberste Optionsschaltfläche all standardmäßig auf jede neue Aktualisierung einer neuen Liste in Spalte 2 überprüfen. Bei einer zweiten neuen Aktualisierung wird jedoch ng-check="true" nicht angewendet und all wird nicht überprüft.ng-check = "true" funktioniert nicht, wenn Radio-Auswahl-Update

Wie kann ich all als Standard festlegen, wenn die Liste der Optionsfelder mit einer neuen Liste aktualisiert wird?

<div class="filter-column"> 
    <div class="filter-title">Market</div> 
    <div class="bottom-line"></div> 
    <div class="overflow-container"> 
     <div ng-show="markets.length >= 1"> 
     <input type="radio" value="all" name="marketRadio" ng-checked="true" class="resetAll" 
      ng-model="filter.market" ng-change="radioMap('market')">All 
     </div> 
     <div ng-repeat="choice in markets| orderBy: 'name'"> 
     <input type="radio" value="{{choice.name}}" name="marketRadio" 
      ng-change="radioMap('market', $index)" ng-model="filter.market" > 
     {{choice.description}} 
     </div> 
    </div> 
    </div> 

Logik, wenn die zweite Spalte von Radiobuttons aktualisiert mit neuer Liste:

var ppvFilter = { 
    regions: [], 
    markets: [], 
    dealers: [] 
    }; 


    function populateMarkets(regionCode) { 
    ppvFilter.markets.length = 0; 
    ppvFilter.dealers.length = 0; 
    var urlPath = API_BASE_URI + 'service/org/' + 
     regionCode + "/markets"; 

    var params = { 
     url: urlPath, 
     method: 'GET' 
    }; 

    $http(params) 
     .then(function(response) { 
     ppvFilter.markets = ppvFilter.markets.concat(response.data); 
     }) 
     .catch(failure); 
    } 

Antwort

3

Das ng-checked Attribut in diesem Fall wird durch den Wert des ng-model Sie an diesen Eingang gebunden haben außer Kraft gesetzt werden . Wenn Sie es beim Laden der Seite einstellen müssen, können Sie ng-init="filter.market = true" verwenden, um filter.market als truthy zu setzen, was das Kästchen ankreuzen wird.

Wenn Sie einen ng-model an einen beliebigen Eingang gebunden haben, hat das Modell Vorrang vor allen hartcodierten Attributen, die versuchen, diesen Wert festzulegen. Sie müssen filter.market programmgesteuert festlegen, damit es funktioniert.

+0

die Aktualisierung wird jedoch nicht beim Laden einer Seite durchgeführt. Es ist Echtzeit, wenn der Benutzer eine Optionsschaltfläche in der vorherigen Spalte der Optionsfelder auswählt. Es ist wie eine Hierarchie. Beispiel: Wenn der Benutzer Radio a in Spalte 1 auswählt, füllen Sie die Optionsfelder in Spalte 2 mit diesen Optionsschaltflächen. Daher bei der zweiten Aktualisierung der Liste. – dman

+0

Wenn Sie einen Plünderer zur Verfügung stellen könnten, kann ich Ihnen helfen, es zu debuggen. Aber das Wichtigste dabei ist, dass das 'ng-Modell 'immer die' ng-geprüfte' Direktive außer Kraft setzt. Es scheint, als müssten Sie das 'ng-Modell' in Ihrem Controller aktualisieren, nachdem Sie die Antwort von der $ http-Anfrage erhalten haben. –

+2

Aber das ändert Ethans Standpunkt nicht. ng-checked ist irrelevant, da der Status des Radiobuttons vom ng-Modell gesteuert wird. Wenn Sie den Status der Schaltfläche ändern möchten, müssen Sie das Modell ändern. –

Verwandte Themen