javascript - 如何在控制台的 Angular 下拉菜单中设置范围值?
问题描述
我想在位于开发人员工具的调试器中的 AngularJS 中设置/更改下拉菜单中的值。
我尝试了以下方法:
angular.element(
getElementsByClassName('input-group ng-pristine ng-isolate-scope ng-empty ng-invalid ng-invalid-required ng-touched')[0]
).scope().model = 'Incorrect PO'"
但是它不起作用。通常当我调试 Angular 并且我想更改某个项目的值时 - 我将“ng-model”属性放在最后(在上面的示例中,ng-model 的属性称为“model”)。
<select name="creditReason"
class="input-group ng-pristine ng-isolate-scope ng-empty ng-invalid ng-invalid-required ng-touched"
id="creditReason"
required="required"
ng-change="change ? change() : _.noop()"
ng-model="model"
ng-options="type.value as type.name for type in list"
ng-disabled="(disableField || disabled)"
ng-required="lookupRequired"
ng-attr-id="{{lookupId}}"
model="confirmDialogCtrl.creditReasonCodeId"
lookup="creditReasons"
lookup-required="true"
lookup-name="creditReason"
lookup-id="creditReason"
ng-attr-name="{{lookupName}}">
<option selected="selected" value="?"></option>
<option value="number:39001" label="Customer Request">Customer Request</option>
<option value="number:39002" label="Discount Not Applied">Discount Not Applied</option>
<option value="number:39003" label="Duplicate Billing">Duplicate Billing</option>
<option value="number:39004" label="Incorrect Address">Incorrect Address</option>
<option value="number:39005" label="Incorrect Billing Method">Incorrect Billing Method</option>
<option value="number:39006" label="Incorrect Cost Center">Incorrect Cost Center</option>
<option value="number:39007" label="Incorrect Customer/Season">Incorrect Customer/Season</option>
<option value="number:39008" label="Incorrect PO">Incorrect PO</option>
<option value="number:39009" label="Incorrect Rate">Incorrect Rate</option>
<option value="number:39010" label="Incorrect Rental Period">Incorrect Rental Period</option>
<option value="number:39011" label="Sales Tax">Sales Tax</option>
<option value="number:39012" label="Other">Other</option>
</select>
您能否建议如何更改下拉菜单的值?我不太了解以下部分:"ng-options" = "type.value as type.name for type in list"
编辑:有人能帮我解决这个问题吗?:(
谢谢!
解决方案
一旦你得到$scope
using .scope()
,你需要 use$apply
来设置model
值。根据文档
$apply()
用于从 AngularJS 框架之外执行 AngularJS 中的表达式。
使用它,您现在可以model
使用以下代码从控制台更新
// Add the relevant classes to access the element.
// input-group should be sufficient if there are no other elements in the DOM with this class name.
const $scope = angular.element(document.getElementsByClassName("input-group")[0]).scope();
$scope.$apply(() => $scope.model = "number:39001")
或者如果您更喜欢在一行中执行此操作
angular.element(document.getElementsByClassName("input-group")[0]).scope().$apply(($scope) => $scope.model = "number:39001")
推荐阅读
- c# - System.ArgumentOutOfRangeException: '索引和长度必须引用字符串中的位置。在c#中
- c# - 为什么从 List 中删除最后一个元素的复杂性对于数组来说是 O(1) 和 O(n)?
- java - JAVA:如何解析日志文件直到找到特定的行,就像linux中的tail命令一样?
- c# - 如何在 C# 中创建一个毫秒的日期时间变量?(西装外套)
- youtube - Youtube 视频版本控制
- kubernetes - 从秘密映射时,Kubernetes pod 环境变量未更新
- db2 - 大型机:如何防止批处理作业和 CICS 事务之间的 DB2 争用?
- flutter - 使用Image.memory在flutter中加载base64图像时出现格式异常
- kubernetes - 问:Rancher + Calico + Ununtu 20.04 裸机 - 无法访问服务网络 (10.43.0.10)
- optimization - 快速评估决策森林