Значение угловой модели не обновляется при изменении выбранного значения

0

У меня есть код в моем контроллере

$scope.currencies = [
    { "currency_code": "USD", "currency_name": "American Dollar" },
    { "currency_code": "AUD", "currency_name": "Australian Dollar" }, 
    { "currency_code": "BRL", "currency_name": "Brazilian Real" }, 
    { "currency_code": "CAD", "currency_name": "Canadian Dollar" }, 
    { "currency_code": "CHF", "currency_name": "Swiss Franc" }, 
    { "currency_code": "CLP", "currency_name": "Chilean Peso" }
]

$scope.selectedCurrency = "USD";

$scope.doStuffs = function(){
   alert($scope.selectedCurrency);
}

И в моем представлении

<div class="selected_currency">{{selectedCurrency}}</div>
<select id="currency" name="currency" ng-model="selectedCurrency" 
ng-options="currency.currency_code as currency.currency_code for currency in currencies"> 
</select>

проблема

Когда я меняю валюту на выбор и выполняю doStuffs(), она предупреждает значение по умолчанию USD, selectedCurrency doStuffs() не принимает измененное значение.

Однако выражение {{selectedCurrency}} работает очень хорошо.

Может ли кто-нибудь сказать мне, как обновить модель при изменении значений?

благодаря

ОБНОВИТЬ

Это не сработало

<ion-view view-title="My Stuffs" ng-controller="MyCtrl">
    <ion-content> 
           <!-- other tags -->
    </ion-content>
</ion-view>

Однако после выполнения кода (я только что определил директиву ng-controller в теге с ion-content)

<ion-view view-title="My Stuffs">
        <ion-content  ng-controller="MyCtrl"> 
               <!-- other tags -->
        </ion-content>
    </ion-view>
  • 0
    Когда вы выполняете $scope.doStuffs ?
  • 0
    Когда вы вызываете doStuffs ? Работает нормально: jsfiddle.net/rayon_1990/L3grpLo9
Показать ещё 4 комментария
Теги:
ionic-framework

3 ответа

0

Двухсторонняя привязка работает в угловом режиме, когда значения обновляются по ссылке. В вашем примере selectedCurrency модельCurrency является примитивной string в javascript и никогда не будет обновляться через refernce, и изменение значения не будет работать в двух направлениях.

Чтобы заставить его работать, привяжите модель к атрибуту объекта:

контроллер

$scope.model.selectedCurrency = 'USD';

HTML

ng-model="model.selectedCurrency" 
0

Чтобы обновить или изменить значение внутри вашего контроллера, вам нужно написать функцию ng-change на нем

<select id="currency" name="currency" ng-model="selectedCurrency" ng-change="doStuffs()" ng-options="currency.currency_code as currency.currency_code 
   for currency in currencies">
</select>

Код

$scope.doStuffs = function(){
console.log($scope.selectedCurrency);}
0

Просто добавьте ng-change="doStuffs()" в элемент select

<select 
   id="currency" 
   name="currency" 
   ng-model="selectedCurrency" 
   ng-change="doStuffs()"
   ng-options="currency.currency_code as currency.currency_code 
   for currency in currencies"> 
</select>

Пожалуйста, демо здесь https://plnkr.co/edit/1gueFbhKkRrqmRiSoTYB?p=preview

  • 0
    Я не знаю, что вы подразумеваете под этим ответом, но он не предупреждает правильное значение даже при изменении события
  • 0
    @WarsMyName, пожалуйста, проверьте эту ссылку plnkr.co/edit/1gueFbhKkRrqmRiSoTYB?p=preview
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню