Angularjs 角度:下拉列表,防止选择ng以触发ng更改
我正在forloop中填充下拉列表,并希望基于表达式为每个下拉列表设置默认值。这似乎是可行的,但我的问题是,当我通过ng selected设置默认值时,它也会触发不理想的更改事件 我只希望在下拉列表实际更改时触发更改事件Angularjs 角度:下拉列表,防止选择ng以触发ng更改,angularjs,angular-material,Angularjs,Angular Material,我正在forloop中填充下拉列表,并希望基于表达式为每个下拉列表设置默认值。这似乎是可行的,但我的问题是,当我通过ng selected设置默认值时,它也会触发不理想的更改事件 我只希望在下拉列表实际更改时触发更改事件 <div layout="row" ng-if="layer.Styles && layer.Styles.length > 1"> <md-input-container class="md-icon-float md-bloc
<div layout="row" ng-if="layer.Styles && layer.Styles.length > 1">
<md-input-container class="md-icon-float md-block layer-style">
<md-select ng-change="vm.changeLayerStyle(layer,selectedStyle)" ng-model="selectedStyle" ng-model-options="{trackBy: '$value.Name'}" aria-label="Change Layer Style">
<md-option ng-repeat="style in layer.Styles" ng-value="style" ng-selected="style.IsDefault == true">
{{style.DisplayName}}
</md-option>
</md-select>
</md-input-container>
</div>
{{style.DisplayName}
在下拉列表中使用角度材质重复选项元素会给人带来麻烦。通常,我会告诉您在select上使用
ng选项
,但由于您特别需要使用某些材质组件,因此这不是一个选项
我知道这不是最漂亮的解决方案,但您可以通过保留上一个值的副本并在触发更改事件后将其与当前值进行比较来解决问题。如果该值未更改,则忽略该事件。这可能需要一些额外的调整,因为设置层。样式可能只会触发大量更新
既然您没有给我们一个plunker来玩,我只能建议您使用updateOn
属性(您已经在使用它来控制track by),并将其设置为您设置所选属性时不会触发的内容。这里会想到值blur
。尝试使用ngModel设置值是的,我有点同意您的第一个选项,在ng更改时调用的函数中,如果(serviceLayer.Style==Style.Name)返回,我会执行类似的操作;这就是我想要的。我很乐意在中继器中控制它,但是哦,好吧