当前位置: 首页 > 面试题库 >

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

倪鸿禧
2023-03-14
问题内容

给定以下选择元素

<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以获取正确的值。

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


问题答案:

与其将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 ...
}


 类似资料:
  • 问题内容: 我有以下HTML 这是由以下对象与国家/地区列表馈赠的 当我更改下拉列表值时,我期望在filterByCountry函数中更新我的模型($ scope.country),但不是。我在这里想念什么? 问题答案: 在该处理之前触发实际更新。如果您想在每次更改时都被解雇(而不是仅在下拉列表更改时被解雇),则应使用以下代码: 我总是发现,在可能的情况下,对我的事件而不是DOM事件的更改做出反应

  • 问题内容: 如何在ng-grid中创建(或访问)选定行的数组? 文档(滚动到“网格选项”) index.html main.js Plnkr代码(并运行它) 问题答案: 根据文档,应该是的属性,因此请尝试以下操作: 控制者 的HTML

  • 问题内容: 我希望解决三个问题… 在我的应用程序页面中,我有一个选择州,另一个选择县。对于州,我有: 数据: 对于我的县,请选择: 数据: 这是我的: 因此,如您所见,我在州选择上使用,在县选择上使用,在县数据集中已设置了相应的州ID 。 我想做几件事: 隐藏选择的县,直到选择了一个州。 选择州后,按选定的/ 过滤县选择选项 筛选由第一,然后由。 我还没有看到一个方法来设置到或过滤器由一个数字,而

  • 问题内容: 我正在使用ng-pattern来验证某些表单字段,并且正在使用ng-change来监视和处理任何更改,但是ng-change(或$ scope。$ watch)仅在form元素位于$有效状态!我对angular还是陌生的,所以我不知道如何解决这个问题,尽管我怀疑应该采用新的指令。 在ng-pattern仍然像以前一样设置表单元素状态的情况下,如何在$ invalid和$ valid表单

  • 问题内容: http://plnkr.co/edit/RP9SpO1qGjn5Ua6pZJ3D?p=preview js 和html 注意,根据半径范围结构检查了“ 2 Mile”无线电输入。为什么ng-change不触发功能? 如果我添加ng-model,则该函数会触发,但是ng-checked无法正常工作。 问题答案: 这是因为您没有使用: plnkr 更新: 很抱歉,我没有注意到您要检查默认

  • 问题内容: 我正在使用ng-options从下拉列表中选择值。我希望能够将旧值与新值进行比较。ng- change非常适合抓住下拉菜单的新值,但是如何同时获得新值和原始值? 例如,假设我希望控制器记录以下信息:“您以前的user.name是BILL,您的当前用户名是PHILLIPE。” 问题答案: 使用有角的{{expression}},您可以将原先的user或user.id值作为文字字符串添加到