получение идентификатора страны возвращает выражение 'mid = s.id' не присваивается - PullRequest
0 голосов
/ 26 мая 2018

У меня есть эта функция, которая возвращает область, называемую mid , для хранения идентификатора стран, которые будут назначены для заполнения полей выбора.Вот функция и область инициализации

$scope.logId = function() {
        $scope.mid = 1;
        console.log($scope.mid);
        return ($scope.mid);
    };

У меня есть цикл стран, который возвращает идентификатор во время цикла.При попытке назначить идентификатор страны в опции выбора для $ scope mid , чтобы изменить начальные $ scope.mid функции $ scope.logId , такчто когда я вызываю функцию get states, она получает текущий идентификатор функции $ scope.logId Я получаю эту ошибку

Expression 'mid = s.id' is non-assignable. Element: <option ng-repeat="s in countries" ng-model="mid = s.id" value="{{s.name}}" class="ng-pristine ng-untouched ng-valid ng-binding ng-scope">

Вот цикл страны, в которой я нахожусьсоздание цикла и присваивание

<option ng-repeat="s in countries" ng-model="mid = s.id" value="{{s.name}}">{{s.name}}</option>

РЕДАКТИРОВАНИЕ, ЧТОБЫ ПОКАЗАТЬ ПОЛНЫЕ КОДЫ

<select ng-click="getCountries()" formcontrol name="country" class="ng-untouched ng-pristine ng-valid" required>



        <option ng-repeat="s in countries" ng-click="mid = s.id" value="{{s.name}}">{{s.name}}</option>

        </select>


    </div>

    <div ng-class = "{'has-error':frmValidation.state.$invalid && !frmValidation.state.$pristine}" class="field required">
      <label>State</label>
      <select ng-click="getStates(mid)" ng-model="reg.state" formcontrol name="state" class="ng-untouched ng-pristine ng-invalid" required >

        <option ng-repeat="s in states" value="{{s.name}}">{{s.name}}</option>
      </select>
    </div>

Помогите, пожалуйста, получить значение select option id присваивается область в середине и принимается от функции logId , так что всякий раз, когда ng-click вызывается по logId , он возвращает текущий идентификатор выбранной страны

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Пожалуйста, проверьте этот код:

Я также реализовал mock API call for countries в моем DEMO, пожалуйста, проверьте

<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<select ng-change="logId()" name="country"  ng-model="mid" required>
        <option ng-repeat="c in countries" value="{{c.name}}">{{c.name}}</option>
</select>


</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
   
    
    $scope.getCountries = function(){
     $http.get("https://restcountries.eu/rest/v2/all")
    .then(function(response) {
      console.log(response)
        $scope.countries = response.data;
    });
    }
    
    $scope.getCountries();
    


    $scope.logId = function() {
        
        alert($scope.mid);
        
    };
});

</script>

    <p>Please select a country and logId() will be called.</p>

</body>
</html>

Пожалуйста, запустите приведенный выше фрагмент

Вот рабочая ДЕМО

0 голосов
/ 26 мая 2018

Попробуйте этот тип HTML и контроллер.Проверьте рабочий образец здесь

<select ng-change="getStates()" formcontrol name="country"  ng-model="cid" required>
        <option ng-repeat="c in countries" value="{{c.id}}">{{c.name}}</option>
</select>

<select formcontrol name="state"  ng-model="sid" required>
        <option ng-repeat="s in states" value="{{s.id}}">{{s.name}}</option>
</select>

Код контроллера

app.controller('myCtrl', function($scope) {
    $scope.cid = "1";
    $scope.countries = [
        {id : "1", name : "Country 1"},
        {id : "2", name : "Country 2"},
        {id : "3", name : "Country 3"}
    ];


    $scope.getStates = function() {
      console.log($scope.cid);
      someApiCall($scope.cid, function() {
            $scope.states = resultFromAPI;
       }) 
       /* $scope.states = [
          {id : "11", name : "State 1"},
          {id : "12", name : "State 2"},
          {id : "13", name : "State 3"}
      ];*/
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...