select 值更改时 ng-change 不起作用
ng-change doesn't work when select value changes
你能帮帮我吗?我不知道这是什么。
我在我的页面上使用了一个模板,每个页面都有你的文件 js 和 angularJS 代码:
~/Content/Scripts/layout/index.js
~/Content/Scripts/home/home.js
~/Content/Scripts/projetos/projetos.js
我试图在下拉值更改时调用一个函数,所以我在局部视图中使用了 ng-change。
我的页面_布局:
<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');
}
});
有什么想法吗?谢谢大家
尝试这些更改,以便您的 select 使用 $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);
}
如果您使用 AngularJS 版本 1.2.x 和最新的 Chrome,请看这个:
https://code.google.com/p/chromium/issues/detail?id=565132
已更新到 1.4.5 这应该可以。
找了半天,终于找到解决办法了。问题是因为我的 ng-model 与 ng-option 同名。我更改了它并且工作正常!
谢谢大家。
你能帮帮我吗?我不知道这是什么。
我在我的页面上使用了一个模板,每个页面都有你的文件 js 和 angularJS 代码:
~/Content/Scripts/layout/index.js
~/Content/Scripts/home/home.js
~/Content/Scripts/projetos/projetos.js
我试图在下拉值更改时调用一个函数,所以我在局部视图中使用了 ng-change。
我的页面_布局:
<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');
}
});
有什么想法吗?谢谢大家
尝试这些更改,以便您的 select 使用 $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);
}
如果您使用 AngularJS 版本 1.2.x 和最新的 Chrome,请看这个: https://code.google.com/p/chromium/issues/detail?id=565132
已更新到 1.4.5 这应该可以。
找了半天,终于找到解决办法了。问题是因为我的 ng-model 与 ng-option 同名。我更改了它并且工作正常!
谢谢大家。