2016-11-15 2 views
0

nicht feuert Ich habe eine Uhr auf region, aber es feuert nicht, wenn ich auf den Radioknopf anklicke.Winkelradioknopf, der auf Uhr

Mache ich etwas falsch oder ist es, weil Radio-Tasten nur einmal in Winkel erkennen? Anyway um dies ohne Formular zu verwenden?

<div class="filter-column"> 
    <div class="filter-title">Region</div> 
    <div class="bottom-line"></div> 
    <div class="overflow-container"> 
     <div ng-repeat="choice in regions| orderBy: 'description'"> 
     <input type="radio" 
      value="{{choice.name}}" 
      name="regionRadio" 
      ng-model="region"> 
     {{choice.description}} 
     </div> 
    </div> 
    </div> 

$scope.$watchCollection(watchRMDapisPopulate, 
    populateRMDfiltersView); 

    function watchRMDapisPopulate() { 
     return regionMarketDealerSrv.orgFilterData; 
     } 

     function populateRMDfiltersView(newValue, oldValue) { 
     if (newValue) { 
      $scope.regions = newValue.regions; 
     } 
     } 



     $scope.$watch('region', radioButtonRegion); 

     function radioButtonRegion(regionName) { 
     console.log(regionName) 
     if (regionName === 'All') { 
      regionMarketDealerSrv.populateRegions(); 
     } else { 
      regionMarketDealerSrv.populateMarkets(regionName); 
     } 
     } 
+1

Try Wert ändern = "{{choice.name}}" ng-value = "{{Wahl .name}} " –

+0

änderte es in' ng-Wert', aber immer noch kein Erfolg. Keine Ausgabe von 'console.log (regionName)'. – dman

+1

Wie wäre es mit der Verwendung von Funktionen als Watch-Ausdruck? $ scope. $ watch (function() {return $ scope.region;}, radioButtonRegion) –

Antwort

2

Die Uhr ist nicht in der Lage die Veränderungen richtig zu holen, wenn ng-model="region" verwenden, da Sie primitive Werte verwenden. Wenn Sie den Wert ändern, erhalten Sie eine neue Referenz. Sie können eine Eigenschaft eines Objekts als Modell verwenden und $watch dass:

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

 
app.controller('MyController', function($scope) { 
 
    $scope.regions = [{ 
 
    name: 'a', 
 
    description: 'region A' 
 
    }, { 
 
    name: 'b', 
 
    description: 'region B' 
 
    }]; 
 

 
    $scope.selected = { 
 
    region: 'a' 
 
    }; 
 

 
    $scope.$watch('selected.region', radioButtonRegion); 
 

 
    function radioButtonRegion(newVal, oldVal) { 
 
    if (newVal !== oldVal) { 
 
     console.log(newVal, oldVal) 
 
    } 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="MyController"> 
 
    <div>Region</div> 
 
    <div ng-repeat="choice in regions| orderBy: 'description'"> 
 
    <input type="radio" value="{{choice.name}}" name="regionRadio" ng-model="selected.region">{{choice.description}} 
 
    </div> 
 
</div>

+0

Ah .... Ich habe das benutzt, aber ich habe keine Möglichkeit, einen voreingestellten Wert einzustellen. Irgendwelche Ideen, wie man einen voreingestellten checked Wert macht, da ich ng-checked nicht benutzen kann? – dman

+1

Sie können einen Initialwert für das $ scope.selected-Objekt festlegen. – DTing