小编典典

获取通过ng-change选择的ng对象

angularjs

给定以下选择元素

<select ng-options="size.code as size.name for size in sizes " 
        ng-model="item.size.code" 
        ng-change="update(MAGIC_THING)">
</select>

有没有办法使MAGIC_THING等于当前选择的大小,因此我可以访问size.namesize.code在我的控制器中?

size.code影响了应用程序的许多其他部分(图像网址等),但是当的ng-model
item.size.code更新时,item.size.name面向用户的东西也需要更新。我认为执行此操作的正确方法是捕获更改事件并在控制器内部设置值,但是我不确定可以将哪些内容传递给update以获取正确的值。

如果这是完全错误的解决方法,我很想知道正确的方法。


阅读 702

收藏
2020-07-04

共1个答案

小编典典

与其将ng-model设置为item.size.code,不如将其设置为size:

<select ng-options="size as size.name for size in sizes" 
   ng-model="item" ng-change="update()"></select>

然后在您的update()方法中,$scope.item将其设置为当前选定的项目。

而且,无论需要什么代码item.size.code,都可以通过来获得该属性$scope.item.code

jsfiddle

*根据评论中的更多信息进行 *更新

为您选择的ng-model使用其他$ scope属性,然后:

<select ng-options="size as size.name for size in sizes" 
   ng-model="selectedItem" ng-change="update()"></select>

控制器:

$scope.update = function() {
   $scope.item.size.code = $scope.selectedItem.code
   // use $scope.selectedItem.code and $scope.selectedItem.name here
   // for other stuff ...
}
2020-07-04