我试图得到一个ng-change函数被调用每次$索引对象的变化。对象是可以在屏幕上重新排序的可拖动div列表。
索引是对象的位置,每次它改变时我都需要更新api,这不是我遇到麻烦的部分。
当$index值发生变化时,它会得到ng-change来实际调用函数。任何建议吗?
<div class="col s7 offset-s1 tooltipped" data-position="bottom" data-delay="50" data-tooltip="Drag cards to move their position.">
<form id="dashDragForm">
<div class="card-panel hoverable center-align"
**ng-model="$index" ng-change="positionUpdate(current, $index)"**
ng-class="{'draggable-md': dashboard.Panels.length < 5 ,'draggable-sm': dashboard.Panels.length > 4}"
ng-repeat="current in dashboard.Panels">
<div class="row col-s12">
<i ng-if="current.Type == 'Table'" class="material-icons left white-text">line_style</i>
<i ng-if="current.Type == 'Chart'" class="material-icons left white-text">timeline</i>
<i class="close material-icons right modal-trigger" data-target="removePanelModal" ng-click="openDeleteModal(current, $index)">close</i>
</div>
<h6 class="white-text">{{current.Title}}</h4>
<div class="row col-s12">
<br/>
</div>
</div>
</form>
</div>
文档明确指出,ng-change
指令仅在用户更改输入时才计算表达式。用户输入input
、select
或textarea
标签。在这种情况下,ng-model
指令不在input
、select
或textarea
标签上。它在div
标签上。
From the Docs:
ngChange
当 用户改变输入时,对给定表达式求值。表达式立即求值,不像JavaScript的onchange事件只在更改结束时触发(通常,当用户离开表单元素或按下返回键时)。
ngChange
表达式仅在输入值的更改导致向模型提交新值时计算。不求值:
- 如果模型是通过编程改变的而不是通过改变输入值
——AngularJS ng-change指令API参考
如果您希望在程序更改时对表达式求值,请使用scope.$watch