Подтвердить что ты не робот

Ng-change не работает на ng-select

Я использую поле выбора, которое заполняется ng-options. К сожалению, я не могу получить функцию ng-change для вызова.

Вот моя скрипка

Вот мой js:

var myApp = angular.module('myApp',[]);


function MyCtrl($scope) {

    $scope.typeOptions = [
    { name: 'Feature', value: 'feature' }, 
    { name: 'Bug', value: 'bug' }, 
    { name: 'Enhancement', value: 'enhancement' }
    ];

    $scope.scopeMessage = "default text";
    var changeCount = 0;

    $scope.onSelectChange = function()
    {
       changeCount++;
        this.message = "Change detected: " + changeCount;
    }.bind($scope);

    //$scope.form = {type : $scope.typeOptions[0].value};
    $scope.form = $scope.typeOptions[0].value;
}

И вот мой HTML:

<div ng-controller="MyCtrl" class="row">
    <select ng-model='form' required ng-options='option.value as option.name for option in typeOptions' ng-change="onSelectChange"></select>

    <div style="border:1px solid black; width: 100px; height:20px;">{{scopeMessage}}<div>
</div>

В настоящее время я поддерживаю мой проект для работы, поэтому любая помощь будет оценена по-разному. Спасибо!

4b9b3361

Ответ 1

2 вещи... и простые:)

  • ng-change=onSelectChange должен быть onSelectChange()
  • this.message должен быть this.scopeMessage

Ответ 2

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

Как здесь: http://jsfiddle.net/MTfRD/1101/

<select ng-model='form' required ng-options='option.value as option.name for option in typeOptions' ng-change="onSelectChange()"></select>