【问题标题】:Angular ng-change event not working on first change?Angular ng-change 事件不适用于第一次更改?
【发布时间】:2015-06-24 20:24:19
【问题描述】:

仍在使用 Angular 学习绳索,我有一个表单,可将​​学生加载到 JSON 返回的选择下拉列表中,我想根据学生 ID 将学校名称标签更改为列为学生学校的学校。这是 JSON 的所有部分,它正在工作......有点。当我从下拉列表中选择学生时,没有任何反应,但如果我将选择更改回默认值,则更改有效,标签现在具有预期值。

在我的 .ascx 中

<select name="studentList" ng-model="student" ng-change="getStudent(student)" ng-options="s.StudentID as s.FirstName for s in cStudents | orderBy:'FirstName'">
                <option value="">Choose Students...</option>
            </select>

来自控制器

angularVolunteerApp.controller('vAppController',
function vAppController($scope, $window) {
    $scope.cStudents = $window.xStudents;

    $scope.getStudent = function(xStudent) {

        angular.forEach(xStudents, function (s) {

            if (s.StudentId == xStudent) {
                $scope.cSchoolName = s.SchoolName;
            }
        });

        //$scope.cSchoolName = xStudent;
    };

});

不确定这是否相关,但这是针对 Sharepoint 2010 中的 Web 部件

【问题讨论】:

  • 似乎它应该可以工作,但你没有所有的 HTML,所以我们看不到应该声明学校名称/等的标签之类的东西。如果您设置了 Plnkr 或其他东西,我会查看它并为您解决。
  • 你能用我的 jsfiddle 项目重新创建这个吗?我没有为下拉列表生成的学生列表jsfiddle.net/jgshultz/mbp2qap2
  • 不是更像if (s.StudentId === xStudent.id)吗?
  • @KreepN 我有一个 Plnkr,但为学生重新创建的数组似乎没有工作,我不知道为什么。 Angular 工作正常……plnkr.co/edit/Ei7L54chG7TRn9JOuH9z?p=preview
  • @Rav3nL0g 不,您在更改时将 ng-model 传回,这是学生 ID 值,当我将该值设置为标签时,它是正确的。

标签: javascript html angularjs sharepoint-2010 scope


【解决方案1】:

找到了你的主要问题,null不能大写:

"CurrentStatus":null 

不是

"CurrentStatus":NULL

加上不一致的变量命名(大小写不一致),你就开始疯狂了!

我已为您解决了所有问题,并让它按照我认为您想要的方式进行,请在此处查看:

http://plnkr.co/edit/o5Y12VUrNX0OHNxJ3dT5?p=preview

【讨论】:

  • 谢谢! '$scope.Student = xStudent;'似乎是我所缺少的。 JSON 上的大写字母对我来说只是一个糟糕的复制/粘贴,我将 JSON 返回到一个标签,这样我就可以返回返回的内容,我们的 CSS 将文本设置为 caps =P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多