Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ng模型在<;选择>;是用JavaScript更改的_Javascript_Html_Angularjs - Fatal编程技术网

ng模型在<;选择>;是用JavaScript更改的

ng模型在<;选择>;是用JavaScript更改的,javascript,html,angularjs,Javascript,Html,Angularjs,我正在尝试使用javascript和anglersJS创建一个自定义下拉框,将数据绑定到select。 并非所有的代码都在这里,但它的工作方式应该是用户单击一个div(作为选项select),该div是用未发布的代码创建的,然后div调用一个函数来更改select标记selected索引和值(不直接更改$scope中的模型)。应更新数据ng模型,但该模型不更新其值 我试着调用$apply()和$digest(),但都不起作用。 select标记显示索引和值已更改,但模型未拾取它 注意:我的Jav

我正在尝试使用javascript和anglersJS创建一个自定义下拉框,将数据绑定到select。 并非所有的代码都在这里,但它的工作方式应该是用户单击一个div(作为选项select),该div是用未发布的代码创建的,然后div调用一个函数来更改select标记selected索引和值(不直接更改$scope中的模型)。应更新数据ng模型,但该模型不更新其值

我试着调用$apply()和$digest(),但都不起作用。 select标记显示索引和值已更改,但模型未拾取它

注意:我的Javascript使用数据bp占位符创建自定义下拉列表

HTML

“selectElement”是选择标记,“i”是索引,“options list”只是选项标记值的列表


如何让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>