使用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