我想在开发人员工具中的调试器中用 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()
获得$scope
后,您需要使用$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")