none
Resetting eines selecteditem von Ionic Select (DropDown) durch Wechsel in einem anderen Select-Control

    Frage

  • Ich arbeite derzeit mit Apache Cordova und Ionic an einer Web-Applikation.
    Auf einer meiner Pages habe ich ein Select-Control (DropDownLists), das von der Auswahl in einem anderen Select-Control auf dieser Page abhängig ist.
    In meinem Fall hängt die Sichtbarkeit des abhängigen Controls von einem bestimmten SelectedItem in dem ersten Select-Control ab.

    Ich habe also folgenden Testfall:
    Ich wähle in dem ersten Select-Control ein bestimmtes Item aus und das zweite Select-Control wird angezeigt.
    Dann wähle ich in dem zweiten Control ein anderes Item als das erste aus.
    Sobald ich ein anderes Item in dem ersten Control auswähle, verschwindet das abhängige Control und wird auf der Page nicht mehr angezeigt.
    An dieser Stelle versuche ich im Code das SelectedItem des abhängigen Controls zurück zu setzen.
    Soweit so gut.

    Nun habe ich leider folgendesProblem:
    Sobald ich im ersten Select-Control wieder das Item für die Anzeige des abhängigen Control auswähle, steht im abhängigen Control immer noch der zuletzt eingestellte Wert.

    So sind meine Controls auf der Page definiert:

        <select id="ddl_type_of_test"
                ng-model="selectedtypeoftest"
                data-ng-options="typeOfTest as typeOfTest.name for typeOfTest in typeOfTests"
                ng-change="typeOfTestChanged(selectedtypeoftest)">
            <option value="{{typeOfTest.name}}"></option>
        </select>
    
        <select id="ddl_reason"
                ng-model="selectedreason"
                data-ng-options="typeOfTestReason as typeOfTestReason.name for typeOfTestReason in typeOfTestReasons"
                ng-change="typeOfTestReasonChanged(selectedreason)">
            <option value="{{typeOfTestReason.name}}"></option>
        </select>
    

    Und dies ist der Code in controller.cs, der alles steuert:

    .controller('TypeOfTestCtrl', function ($scope, TypeOfTests, TypeOfTestReasons, TypeOfTestUserReasons) {
        $scope.typeOfTests = TypeOfTests.all();
        $scope.typeOfTestReasons = TypeOfTestReasons.all();
        $scope.typeOfTestUserReasons = TypeOfTestUserReasons.all();
    
        $scope.typeOfTestChanged = function (item) {
            if (item.id == 'partial_acceptance_testing') {
                $scope.showTypeOfTestReason = true;
            }
            else {
                $scope.showTypeOfTestReason = false;
                $scope.showTypeOfTestUserReason = false;
                debugger;
                if (angular.isDefined($scope.typeOfTestReasons)) {
                    delete $scope.typeOfTestReasons;
                    $scope.typeOfTestReasons = TypeOfTestReasons.all();
                    $scope.selectedreason = $scope.typeOfTestReasons[0].name;
                }
                if (angular.isDefined($scope.typeOfTestUserReasons)) {
                    delete $scope.typeOfTestUserReasons;
                    $scope.typeOfTestUserReasons = TypeOfTestUserReasons.all();
                }
            }
        };
        $scope.showTypeOfTestReason = false;
        $scope.showTypeOfTestUserReason = false;
    
        $scope.typeOfTestReasonChanged = function (item) {
            if (item.id == 'user_defined') {
                $scope.showTypeOfTestUserReason = true;
            }
            else {
                $scope.showTypeOfTestUserReason = false;
            }
        };
        $scope.showTypeOfTestUserReason = false;
    })
    

    Noch eine Anmerkung.
    Wenn ich die Seite zur Laufzeit debugge, steht in $scope.selectedreason nach dem Setzen der korrekte Wert, aber wenn ich anschließend im ersten Select-Control wieder das Item auswähle, das für die Anzeige des abhängigen verantwortlich ist, steht in dem anhängigen immer noch der zuletzt eingestellte Wert.
    Die Auswahl in dem anhängigen Select-Control wird nicht resettet.
    Was muss ich noch hinzufügen, um den Reset auszuführen?
      
    Donnerstag, 10. November 2016 08:37