ng模型在<;选择>;是用JavaScript更改的
我正在尝试使用javascript和anglersJS创建一个自定义下拉框,将数据绑定到select。 并非所有的代码都在这里,但它的工作方式应该是用户单击一个div(作为选项select),该div是用未发布的代码创建的,然后div调用一个函数来更改select标记selected索引和值(不直接更改$scope中的模型)。应更新数据ng模型,但该模型不更新其值 我试着调用$apply()和$digest(),但都不起作用。 select标记显示索引和值已更改,但模型未拾取它 注意:我的Javascript使用数据bp占位符创建自定义下拉列表 HTML “selectElement”是选择标记,“i”是索引,“options list”只是选项标记值的列表ng模型在<;选择>;是用JavaScript更改的,javascript,html,angularjs,Javascript,Html,Angularjs,我正在尝试使用javascript和anglersJS创建一个自定义下拉框,将数据绑定到select。 并非所有的代码都在这里,但它的工作方式应该是用户单击一个div(作为选项select),该div是用未发布的代码创建的,然后div调用一个函数来更改select标记selected索引和值(不直接更改$scope中的模型)。应更新数据ng模型,但该模型不更新其值 我试着调用$apply()和$digest(),但都不起作用。 select标记显示索引和值已更改,但模型未拾取它 注意:我的Jav
如何让ng模型在更改select标记的值后更新其值。ng模型仅在用户选择值时更新范围模型。当JavaScript修改
元素的值属性时,它不会更新作用域模型
0
1.
2.
3.
4.
5.
6.
7.
8.
9
要从JavaScript更新范围模型,请执行以下操作:
$scope.count.amount = "5";
确保使用字符串而不是数字。您似乎在直接操纵DOM,应该避免使用,因为AngularJs可能无法识别它。
要使用正确的AngularJs方式,您需要更改两个位置:
- 如前所述,将用户输入分配给模型而不是DOM元素
- 您的
data-bp占位符
处理程序似乎通过直接DOM操作(我想是通过使用appendChild
)将选项值动态添加到selectElement
)。你或许应该试试这个:
然后,您的HTML可能看起来像这样,可能不需要数据bp占位符
:
<select data-ng-model="count.amount" data-ng-options="amount for amount in count.amounts">
</select>
ng model
direcitve仅在用户选择值时更新范围模型。当JavaScript修改
元素的值属性时,它不会更新作用域模型。
$scope.count.amount = "5";
$scope.count.amounts = Array.from(Array(10).keys()); // Create scope array variable of whatever your list is
<select data-ng-model="count.amount" data-ng-options="amount for amount in count.amounts">
</select>