给定以下选择元素
<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影响了应用程序的许多其他部分(图像网址等),但是当的ng-model item.size.code更新时,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
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 ... }