Javascript 当Angular正确更新模型时,为什么不通过向ng options中的标记添加“selected”属性来更新DOM?

Javascript 当Angular正确更新模型时,为什么不通过向ng options中的标记添加“selected”属性来更新DOM?,javascript,angularjs,select,ng-options,Javascript,Angularjs,Select,Ng Options,使用Angular 1.2.29当我使用ng选项构建模型时,它会显示在曲面上,以按预期工作;当我选择一个选项时,模型会更新,并且直观地指示新选择的选项已被选择 但是,当使用开发人员工具查看标记时,我可以看到选项标记没有更新,特别是所选属性没有从以前选择的选项中删除,也没有添加到新选择的选项中 <div data-ng-controller="MainController as main"> <pre> {{ main.test.item }} </pre>

使用Angular 1.2.29当我使用ng选项构建模型时,它会显示在曲面上,以按预期工作;当我选择一个选项时,模型会更新,并且直观地指示新选择的选项已被选择

但是,当使用开发人员工具查看标记时,我可以看到选项标记没有更新,特别是所选属性没有从以前选择的选项中删除,也没有添加到新选择的选项中

<div data-ng-controller="MainController as main">

  <pre> {{ main.test.item }} </pre>

  <select
    data-ng-model="main.test.item"
    data-ng-options="item.label for item in main.test.items"
    required="required">
    <option value="" label="What do you want?"></option>
  </select>

</div>
模型保持最新是很好的,但是为什么加价保持不变呢

可以做些什么来修复此问题,以便更新它以匹配模型


抱歉,显然没有足够的声誉发表评论

@我认为答案仍然适用。更详细地说,DOM具有属性和属性。属性具有您关心的实际值,它们将随着您更改选择而更新。当您在标记中看到selected=selected时,您看到的是选定的属性。属性不会随着选择的更改而更新,它们存在于标记中以创建元素,通常用于初始化元素的属性

编辑:jQuery文档中有更好的解释,请查看属性与属性部分。

所选属性不应更新

它仅用于指示最初应选择其启用的选项


因此,Angular在正确更新模型时,不会通过向ng options中的标记添加“selected”属性来更新DOM,因为它不应该这样做。

您可以包括一个小JSFIDLE吗?您可能对@AdamAxtmann cheers,我一直在stackoverflow中拖网,但没看到one@AdamAxtmann我看了一下,但我相信问题的原因是不同的。i、 e:在我的示例中,我预先选择了列表中的第二个项目,以便模型使用该列表中的一个项目–这非常有效,我的问题是接下来不会发生什么。@devqon好主意,添加了!您的观点是我不应该关心“selected=selected”属性是添加到标记中还是从标记中删除?我已经更新了JSFIDLE,以说明添加属性是有角度的,并且标记本身不会以这种方式更新DOM。@paulhhowells是的,属性本身除了初始化属性之外什么都不做。
angular
  .module('myApp')
  .controller('MainController', MainController);

function MainController () {

  this.test = {};

  this.test.items = [
    { label : 'A' },
    { label : 'B' },
    { label : 'C' }
  ];

  // Pre-select the second item.
  this.test.item = this.test.items[1];
}