使用jQuery值更新Angular模型

嗨我有一个输入字段附加我的模型,当用户手动键入它时,一个函数在更改时调用 – 这工作正常,模型在控制台日志中按预期反映。

 

我现在的问题是我有第二个jQuery函数,可以由用户在页面上调用自动填充输入字段,但这似乎不会触发模型的更新只有视觉值的输入字段。

因此我在第二个jQuery中添加了以下调用以触发更新(基于我的研究,这应该是正确的)

 $(".rating").trigger('input'); 

这似乎在Firefox和Chrome中运行良好,因为我在控制台日志中反映了该模型,但在IE中(我有11个 – 不确定旧浏览器)触发器输入似乎不能更新模型。

希望你能帮忙。

更新的答案:

我认为它不起作用,因为Angular可能不知道这种变化。 在更新模型或在$ scope内添加函数后,尝试调用$ scope。$ digest()。$ apply(function(){$ …..});


您可以在控制器中添加一个函数,而不是使用jQuery,该函数将值赋给ng-model。

例如

   

并在你的控制器

 $scope.autoFill = function() { $scope.data.input = "Hello World!"; }; 

因为,您要更新Angular上下文之外的文本字段值,您需要告诉Angular重新加载$scope的更改。 因此,如果您有权访问范围变量,请在通过jQuyery设置输入字段的值后直接调用$apply()

 $scope.$apply(); 

但是,如果您无权访问$scope ,则可以使用任何父元素或输入字段本身来获取范围:

假设你的HTML看起来像这样:

 

然后这样做:

 angular.element(document.querySelector("#foo")).scope().$apply(); 

尝试使用ng-focus而不是ng-change