当选择值更改时,ng-change 不起作用



你能帮我吗?我不知道这可能是什么。

我在我的页面上使用了一个模板,每个页面都有你的文件js和angularJS代码:

~/Content/Scripts/layout/index.js

~/Content/Scripts/home/home.js

~/Content/Scripts/projetos/projetos.js

我试图在下拉列表值更改时调用一个函数,所以我在局部视图中使用ng更改。

我的页面布局(_L):

<html lang="en" class="no-js" ng-app="App">
 ...
<!-- BEGIN CONTENT -->
                <div class="page-content-wrapper">
                    <div class="page-content">
                        @RenderBody()
                        @Scripts.Render("~/bundles/jquery")
                        @RenderSection("scripts", required: false)
                    </div>
                </div>
    <!-- END CONTENT -->

当菜单上的事件点击发生时,我的部分视图被加载

<div ng-cloak ng-controller="ProjetosController" ng-init="init()">
...
<div class="col-md-3">
      <label>Projetos</label>
          <div class="input-icon input-icon-lg">
                <select ng-change="changed()" data-placeholder="selecione..." class="form-control input-lg select2me" ng-model="Projetos"
                       ng-options="proj.Nome for proj in Projetos">
                           <option value=""></option>
                </select>
          </div>

但当我查看Chrome的开发工具时,什么都没有发生,也没有出现任何错误。

我的控制器c#

public JsonResult LoadProjetos()
        {
            var results = rep.LoadProjetos();//List<Projetos>();
            return Json(new
            {
                projetos = results
            }, JsonRequestBehavior.AllowGet);
        }

我的控制器js

var app = angular.module('App');    
app.controller('ProjetosController', function ($scope, $http) {        
    $scope.init = function () {
        $("#menu").find('li#projetos').addClass("start active");
        $http({
            method: 'GET',
            url: 'Projetos/LoadProjetos'
        }).then(function successCallback(response) {
            var projetos = response.data.projetos;
            $scope.Projetos = projetos;
        }, function errorCallback(response) {
            alert(response);
        });
    }
    $scope.changed = function () {
        alert('text');
    }
});

有什么想法吗?感谢所有

尝试这些更改,以便您的选择使用$scope变量:

<select ng-change="changed()" data-placeholder="selecione..." class="form-control input-lg select2me" ng-model="selectedItem"
   ng-options="proj.Nome for proj in Projetos">
   <option value=""></option>
</select>
$scope.changed = function () {
     alert($scope.selectedItem);
 }

http://plnkr.co/edit/uUf9ehxQpBSzVgQasTtN?p=info

如果您使用AngularJS 1.2.x版本和最新的Chrome,请参阅:https://code.google.com/p/chromium/issues/detail?id=565132

更新到1.4.5这应该有效。

过了很长时间,我找到了一个解决方案。问题是因为我的ng模型与ng选项同名。我改了,效果很好!

Thx all。

最新更新