Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng更改不适用于ng选择_Javascript_Angularjs - Fatal编程技术网

Javascript ng更改不适用于ng选择

Javascript ng更改不适用于ng选择,javascript,angularjs,Javascript,Angularjs,我正在使用一个由ng选项填充的选择框。不幸的是,我无法调用我的ng change函数 这是我的js: var myApp = angular.module('myApp',[]); function MyCtrl($scope) { $scope.typeOptions = [ { name: 'Feature', value: 'feature' }, { name: 'Bug', value: 'bug' }, { name: 'Enhanceme

我正在使用一个由
ng选项填充的选择框
。不幸的是,我无法调用我的
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>

{{scopeMessage}}

这是目前阻碍我在我的工作项目,所以任何帮助将非常感谢。谢谢

您的问题是将函数引用传递给ng change指令。但是,该指令需要一个可以计算的表达式。因此,将括号附加到函数,以便可以将其作为函数调用进行计算

就像这里:


2件事。。。两者都很简单:)

  • ng change=onSelectChange
    应该是
    onSelectChange()
  • this.message
    应该是
    this.scopeMessage

  • 这确实应该是公认的答案。测试JSFIDLE的user45763显示,文本框不会变为“检测到更改”,这是出于Timothy的回答中的原因#2。@MichaelMahony问题是“……我无法调用我的ng change函数。”。我是第一个回答错误的人,这就是为什么我的答案被接受是有意义的。@user45763我理解你的意思,但当你阅读他的代码时,他希望更改也更改文本框。对我来说,一个完整的答案可以帮助你找到解决方案。蒂蒙蒂就是这样做到的。你的回答很有帮助,只是(以我的拙见)不完整。很抱歉,我整整一年都没有回顾这篇文章。是的@MichaelMahony你是对的。是时候解决问题了。呜呜!我得到了公认的答案!谢谢@webwalker:)
    <select ng-model='form' required ng-options='option.value as option.name for option in typeOptions' ng-change="onSelectChange()"></select>