动态选择ng时不会调用ng-change

时间:2015-06-28 17:07:15

标签: javascript angularjs angularjs-ng-repeat

我正在动态选择select中的项目。正在正确选择项目,但model未获得更新。此外,在这种情况下,ng-change未被调用。

代码

<select id="course" name="course"
        ng-model="courseId"
        ng-change="getBatch(courseId)">
    <option
        ng-repeat="course in courses"
        value="{{course.course_id}}"
        ng-selected="course.course_name == 
                         '<?php echo ($editMode)? $student_data->course_name : ""?>'">
            {{course.course_name}}
    </option>
</select>

我试过

setInterval(function(){
        $scope.$apply();
    }, 2000);

我查了很多链接,但我没有得到答案。

3 个答案:

答案 0 :(得分:0)

这是我尝试过的。 我删除了PHP部分,因为它没有在我的机器上配置。

工作正常

HTML。

<select id="course" name="course"
        ng-model="courseId"
        ng-change="getBatch(courseId)">
    <option
        ng-repeat="course in courses"
        value="{{course.course_id}}">
            {{course.course_name}}
    </option>
</select>

JS

根据您的HTML创建示例课程数组。

$scope.courses = [{course_id :112,course_name:'course1'},
      {course_id :15,course_name:'course2' },
      {course_id :11,course_name:'course3' },
      {course_id :14,course_name:'course4' }
      ];

      $scope.getBatch = function(courseId){

        console.log(courseId);

      }

答案 1 :(得分:0)

你应该可以像这样使用ngOptions

<select id="course" name="course" 
    <?php echo $editMode ? 'ng-init="courseId = ' . $student_data->course_id . '"' : '' ?>
    ng-model="courseId" 
    ng-change="getBatch(courseId)"
    ng-options="course.course_id as course.course_name for course in courses">
</select>

然后模型应该正确绑定,前提是PHP $student对象也具有属性course_id

答案 2 :(得分:0)

只需在ng-init中添加一个包含您要执行的<select id="course" name="course" ng-model="courseId" <?php echo $editMode ? 'ng-init="initCourseSelect(' . $student_data->course_id . ')"' : ''?> ng-change="getBatch(courseId)"> <option ng-repeat="course in courses" value="{{course.course_id}}"> {{course.course_name}} </option> </select> 代码。

$scope.initCourseSelect = function (courseId) {
    console.log("course id ", courseId);
    // set model to be selected on view
    $scope.courseId = courseId;
}

控制器:

void byte_swapping(uint32_t* dest, const uint32_t* src, size_t count)
{
    size_t i;
    for (i = 0; i + 4 <= count; i += 4)
    {
        __m128i s = _mm_loadu_si128((__m128i*)&src[i]);
        __m128i d = _mm_or_si128(_mm_slli_epi32(s, 16), _mm_srli_epi32(s, 16));
        _mm_storeu_si128((__m128i*)&dest[i], d);
    }
    for ( ; i < count; ++i) // handle residual elements
    {
        uint32_t w = src[i];
        w = (w >> 16) | (w << 16);
        dest[i] = w;
    }
}