我有一个表单在指令中。它包含2个选择下拉菜单(jQuery风格)和一个jQuery UI滑块,因此它始终是主题。jQuery UI中的更改没有反映在角度模型上
下拉列表1在生成时填充,就像它们来的那么简单。 当Dropdown 1的值发生变化时,下拉2会被填充。发生这种情况是因为下拉列表1已附加ng-change="refreshModels()"
。这像一个魅力。
但是,滑块更成问题。 为了获得滑块的值,我需要一个隐藏的输入字段,在滑块位置的每次更改中都会使用$ .val()填充。该值正确更新,甚至更改事件触发(当我将onchange="console.log('I changed')"
放到隐藏字段上时,我将所有内容都记录得很好)。
但是,附加到该相同隐藏字段的ng模型从不更新。不像onchange那样,Ng-change从不触发。
所以我asked around,并试图在jQuery的滑块的滑动处理这样做:
angular.element($(this)).scope().$apply();
但没有骰子。什么都没发生。试图打电话给我所知道的模型,就像我知道的那样:
angular.element($(this)).scope().model_that_definitely_exists;
产量未定义。尝试访问指令父控制器中的模型也会产生未定义的问题。
为什么使用直接用户在字段中输入以外的方式进行Angular寄存器更改如此困难?我究竟做错了什么?
P.S.我试着把ng-mouseup放到成为滑块的元素上,并且调用了刷新方法 - 但是直接调用隐藏的字段。对于Angular来说,这些仍然是未定义的,即使在现实中,它们也有价值 - 滑块将它们放在那里。
P.P.S.我也尝试将$ watch放到我希望在移动滑块后改变的模型上,没有任何东西。模型的值永远不会改变,即使字段的val实际上也是如此。
P.P.P.S.我刚刚发现这种令人伤心的事态。 https://github.com/angular-ui/angular-ui/issues/252如果任何人有解决方法,我会非常感激。
[使用jQuery设置输入值后更新角度模型]的可能重复(http://stackoverflow.com/questions/17109850/update-angular-model-after-setting-input-value-with-jquery) – Stewie
Don '不知道这个JSBin是否有帮助:http://jsbin.com/azasus/1/edit – imaginaryboy