установка выбранного значения как неопределенного в angualrjs - PullRequest
0 голосов
/ 04 октября 2018

Я использую директивы angularjs ng-options и ng-model с моей точки зрения, чтобы установить опцию select и получать уведомления при выборе или изменении выпадающего меню.Я также добавляю дополнительную пустую опцию, чтобы пользователь мог отменить выбор, и для этого я хочу, чтобы значение в выражении ng-модели было неопределенным.Есть ли способ сделать это?Я попытался добавить значение == "{{undefined}}", но это полностью исключает пустую опцию.

Вот пример плунжера, где, если я выбираю пустую опцию, тогда data.model должен быть неопределенным, но вот онприходит как ноль.

https://plnkr.co/edit/d9Jzs4YgqpWHbOxonwa3?p=preview

<code><!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-select-ngvalue-production</title>


  <script src="//code.angularjs.org/snapshot/angular.min.js"></script>
  <script src="app.js"></script>




    </head>
    <body ng-app="ngvalueSelect">
      <div ng-controller="ExampleController">
      <form name="myForm">
        <label for="ngvalueselect"> ngvalue select: </label>
        <select size="6" name="ngvalueselect" ng-model="data.model" multiple>

          <option label='' value="{{undefined}}"/>
          <option ng-repeat="option in data.availableOptions" ng-value="option.value">{{option.name}}</option>

        </select>
      </form>
      <hr>
      <pre>model = {{data.model === undefined | json}}

Соответствующим app.js является

(function(angular) {
  'use strict';
angular.module('ngvalueSelect', [])
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.data = {
     model: null,
     availableOptions: [
          {value: 'myString', name: 'string'},
          {value: 1, name: 'integer'},
          {value: true, name: 'boolean'},
          {value: null, name: 'null'},
          {value: {prop: 'value'}, name: 'object'},
          {value: ['a'], name: 'array'}
     ]
    };
 }]);
})(window.angular);

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

С вашим кодом есть две проблемы:

  1. Ваш выпадающий список позволяет многократный выбор благодаря атрибуту multiple.Это означает, что ваша модель хранит массив выборок.Значение, которое вы ищете, является одним из элементов массива, но в вашем коде вы сравниваете undefined со всем массивом.
  2. Ваш дополнительный параметр должен использовать ng-value вместо value атрибута,Вам не нужно писать как отдельный вариант, вы можете добавить его к availableOptions объекту (как {value: undefined, name: ''}).

Вот обновленный плункер: https://plnkr.co/edit/RXUlW6P7DX2wPZOazwe8?p=preview

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