给定以下选择元素
<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.name并size.code在我的控制器中?
size.name
size.code
size.code 会影响应用程序的许多其他部分(图像 url 等),但是当item.size.code更新 ng-model 时,也item.size.name需要针对面向用户的内容进行更新。我认为执行此操作的正确方法是捕获更改事件并在我的控制器内部设置值,但我不确定我可以将什么传递给 update 以获得正确的值。
item.size.code
item.size.name
如果这完全是错误的方法,我很想知道正确的方法。
与其将 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将设置为当前选择的项目。
update()
$scope.item
无论需要什么代码item.size.code,都可以通过$scope.item.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 ... }