Использование Angular Выберите, после выбора значения, ng-модель пуста - PullRequest
0 голосов
/ 14 марта 2020

Как мне удержать $scope.model.AvaliableCustomers от установки на null?

Кажется, что моя опция выбора выпадающего меню работает правильно до тех пор, пока я не выберу значение. Как только я выбираю значение, вместо того, чтобы показывать выбор, модель очищается, и ничего не появляется для опций выбора, кроме начального значения по умолчанию «- Выбрать -». Список моделей и опций исчезнет.

Я пробовал это с событием ng-change и вижу, что событие срабатывает два раза после выбора. При первом заполнении модели переменные внутри customerChange работают нормально. По неизвестной мне причине событие сразу же происходит во второй раз - теперь $scope.model.AvaliableCustomers равно null, и мой список выбора пуст. Как мне удержать $scope.model.AvaliableCustomers от удара?

$scope.init = function () {
    $scope.model =
    {
        "CustomerProfileId": 0,
        "CustomerName": null,
        "AvaliableCustomers": [
            {
                "CustomerName": "John Doe",
                "CustomerProfileId": 1,
                "IsSelected": true
            },
            {
                "CustomerName": "Janit Doe",
                "CustomerProfileId": 2,
                "IsSelected": true
            },
            {
                "CustomerName": "Mark Doe",
                "CustomerProfileId": 3,
                "IsSelected": true
            },
            {
                "CustomerName": "Lisa Doe",
                "CustomerProfileId": 4,
                "IsSelected": true
            },
        ]
    }
};

$scope.customerChange = function () {
    $scope.parameters.customerId = $scope.model.AvaliableCustomers.CustomerProfileId;
}

Index.cs html:

<div class="col-sm-2">
    <div class="form-group">
        <label for="customers">Customer</label>
        <select id="selectCustomerId" class="form-control"
                ng-change="customerChange()"
                ng-model="model.AvaliableCustomers"
                ng-options="c.CustomerName for c in model.AvaliableCustomers">
            <option value="">-- Select --</option>
        </select>
    </div>
</div>

1 Ответ

1 голос
/ 14 марта 2020

Как мне не дать растоптать $scope.model.AvaliableCustomers?

Использовать другую переменную области видимости для директивы ng-model:

<div class="col-sm-2">
    <div class="form-group">
        <label for="customers">Customer</label>
        <select id="selectCustomerId" class="form-control"
                ng-change="customerChange()"
                ̶n̶g̶-̶m̶o̶d̶e̶l̶=̶"̶m̶o̶d̶e̶l̶.̶A̶v̶a̶l̶i̶a̶b̶l̶e̶C̶u̶s̶t̶o̶m̶e̶r̶s̶"̶
                ng-model="somethingElse"
                ng-options="c.CustomerName for c in model.AvaliableCustomers">
            <option value="">-- Select --</option>
        </select>
    </div>
</div>

Для более информация, см.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...