哪个部分进行双向绑定更新?

时间:2016-02-21 19:35:09

标签: angularjs angular-digest angularjs-bindings

假设我在带有SortBy模型的控制器中有以下数组。

var empsColl = [
        { 'firstName': 'Donney', 'gender': 'male', DOB:new Date("November 20, 1978"), salary1:12000, salary2:12000 },
        { 'firstName': 'Obama', 'gender': 'male', DOB: new Date("April 10, 1980"), salary1: 40000, salary2: 40000 },
        { 'firstName': 'Jeb', 'gender': 'male', DOB: new Date("May 20, 1990"), salary1: 120000, salary2: 120000 },
        { 'firstName': 'Xing', 'gender': 'male', DOB: new Date("May 3, 1990"), salary1: 12, salary2: 12 },
        { 'firstName': 'Dillon', 'gender': 'male', DOB: new Date("May 3, 1990"), salary1: 6000, salary2: 6000 }
    ];
    $scope.Employees = empsColl;
    $scope.SortBy = 'firstName';

在视图中,我在<select ng-model="SortBy">中的两个位置和<div>{{SortBy}}</div>中的表达式绑定中使用了双向绑定

我当然知道模型更新会更新表达式绑定部分,但会重新更新<select>中的选定选项吗?

1 个答案:

答案 0 :(得分:2)

在场景背后发生的事情是,角度收集所有视图级别bindingsbinding directivesng-model&#39; s,$watch expression等等。它在$scope $$watchers对象中。所有观察者阵列都是如此。

当Angular运行用于更新绑定的摘要周期时,它通过对模型应用脏检查来重新评估每个观察者表达式(在每个摘要周期上)。如果模型newValue !== oldValue则只更新绑定。否则会跳过更新。