小编典典

使用 ng-change 选择 ng-object

all

给定以下选择元素

<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 会影响应用程序的许多其他部分(图像 url 等),但是当item.size.code更新 ng-model
时,也item.size.name需要针对面向用户的内容进行更新。我认为执行此操作的正确方法是捕获更改事件并在我的控制器内部设置值,但我不确定我可以将什么传递给
update 以获得正确的值。

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


阅读 64

收藏
2022-04-14

共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.

小提琴

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

然后为您选择的 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 ...
}
2022-04-14