JQuery 与 angularjs ng-model 的集成
Posted
技术标签:
【中文标题】JQuery 与 angularjs ng-model 的集成【英文标题】:JQuery integration with angularjs ng-model 【发布时间】:2017-12-20 02:28:39 【问题描述】:我想使用 jQuery 为 Angular 创建自定义下拉列表,并且在调用 jQuery .val(newValue)
后无法更新 Angular 模型。为什么我使用 jQuery?因为在某些页面中,我几乎没有包含约 500 个元素的下拉菜单,而且纯角度渲染的工作速度非常慢。这是我的指令链接功能:
(scope, element) =>
const parent = $(element);
const field = parent.find('input');
const list = parent.find('ul');
scope.options.map(item => list.append(
$('<li>')
.text(item.text)
.addClass(item.disabled && 'disabled')
.data(
value: item.value,
disabled: item.disabled
)
.click(function ()
const data = $(this).data();
if (!data.disabled)
field
.val(data.value)
.trigger('change');
// also tried => scope.model = data.value;
)
));
这是模板:
<div class="dropdown">
<input
type="text"
readonly
placeholder="Select item"
ng-model="model"
ng-change="change">
<ul></ul>
</div>
在***上,我发现应该调用.trigger('change')
,但改变模型没有帮助。如何更新角度模型?
【问题讨论】:
谁想要使用包含 500 个值的下拉菜单? 【参考方案1】:我找到答案了
scope.$parent.$apply(() =>
scope.model = data.value;
);
代替
field
.val(data.value)
.trigger('change');
【讨论】:
以上是关于JQuery 与 angularjs ng-model 的集成的主要内容,如果未能解决你的问题,请参考以下文章
我们应该将 jQuery 与 AngularJS 一起使用吗? [关闭]
JQuery 菜单编辑器与 AngularJS 1.5 不兼容
两强相争,鹿死谁手 — JQuery中的Ajax与AngularJS中的$http