【问题标题】:Angularjs 1.4 on-change not firing with SelectAngularjs 1.4 on-change 不使用 Select 触发
【发布时间】:2015-09-27 09:49:16
【问题描述】:

请找plunker code

app.js

var app = angular.module('plunker', []);
    app.controller('MainCtrl', function($scope) {
      $scope.name = 'World';
       $scope.levels = [{LevelId:0,LevelName: "Level 1"}, {LevelId:1,LevelName: "Level 2" }];
        $scope.updateLevel = function() {
            console.log("Fired on change");
            $scope.result="Data Changed";
        }
    });

index.html

<!DOCTYPE html>
<html ng-app="plunker">

<head>
  <meta charset="utf-8" />
  <title>AngularJS Plunker</title>
  <script>
    document.write('<base href="' + document.location + '" />');
  </script>
  <link rel="stylesheet" href="style.css" />
  <script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.2/angular.js" data-semver="1.4.2"></script>
  <script src="app.js"></script>
</head>

<body ng-controller="MainCtrl">
  <label for="textbox3">Select Level</label>
  <select id="LevelSelect" class="form-control" ng-Change="updateLevel()" ng-model="selectedLevel" ng-options="lvl as level.LevelName for level in levels"></select>
  <p>{{result}}</p>
</body>

</html>

我提到了各种 SO 问题,例如 on not calling the declared methodonchange not working。建议。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    您使用ng-options 的方式不正确,因为呈现的选项值是undefined:undefined 对于所有选项检查下图,当您更改所选项目时,它不会触发ng-change 事件,因为所有值都是一样。

    所以改成,

    ng-options="level as level.LevelName for level in levels"
    

    请参考这个角度DOC

    UPDATED PLUNKER

    【讨论】:

    • 反应很好。非常感谢托雷斯。经过一番挣扎,确实有所作为。 :)
    • 是的,很高兴为您提供帮助:) 请仔细阅读我添加的角度文档,并使用ng-change 简单的c,这不会导致任何问题,但它是标准。 :) 欢呼
    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    相关资源
    最近更新 更多