ng-change不适用于ng-select

时间:2014-08-18 19:21:53

标签: javascript angularjs

我正在使用由ng-options填充的选择框。不幸的是,我无法调用ng-change函数。

Here is my Fiddle

这是我的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>

这是我目前的工作项目,所以任何帮助都会得到很好的赞赏。谢谢!

2 个答案:

答案 0 :(得分:16)

2件事......都很简单:)

  1. ng-change=onSelectChange应为onSelectChange()
  2. this.message应为this.scopeMessage

答案 1 :(得分:6)

您的问题是您将函数引用传递给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>