ng-change не работает при изменении выбранного значения
Не могли бы вы мне помочь? Я понятия не имею, что это может быть.
Я использую шаблон на своих страницах, и на каждой странице есть ваш файл js с кодом angularJS:
~ / Content / Сценарии / макет / index.js
~ / Content / Scripts / дома / home.js
~ / Content / Scripts / Projetos / projetos.js
Я пытаюсь вызвать функцию при изменении значения раскрывающегося списка, поэтому я использую ng-change в частичном представлении.
Моя страница _Layout:
<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');
}
});
Есть идеи? Спасибо всем
3 ответа
После долгого времени я нашел решение. Проблема в том, что моя ng-модель имеет то же имя, что и ng-опция. Я изменил это и работает отлично!
Спасибо всем.
Если вы используете AngularJS версии 1.2.x и новейший Chrome, посмотрите это: https://code.google.com/p/chromium/issues/detail?id=565132
обновлено до 1.4.5 Это должно работать.
Попробуйте эти изменения, чтобы ваш выбор использовал переменную $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);
}