Angular -在数据更新后运行jQuery
Angular - Run jQuery after data update
我使用的是Angular 1.4.7。我没有建立这个网站,所以我不确定我需要提供什么信息。我们正在呈现一些搜索过滤器,但是否启用它们是由从服务器检索的数据配置的,例如:
$scope.searchFields = {
"date": true,
"price": true,
...
};
搜索字段的HTML ($scope.filter
是这个特定过滤器的一个单独的变量集,在这种情况下它只是选择一个最大的数值):
<div class="limit-group clearfix">
<span class="detail">Filter Name:</span>
<div class="filter-select-small">
<select name="filter" class="custom-select" ng-if="searchFilters.code">
<option value="">No Max</option>
<option ng-repeat="(key, value) in filter" value="<%key%>"><%value%></option>
</select>
<span class="unavailable" ng-if="!searchFilters.code">Unavailable</span>
</div>
</div>
在某些情况下,可用的搜索字段会发生变化。不管出于什么原因,选择字段被一个名为selectbox的jQuery插件所取代。我有一个函数resetFilterStyles()
重新连接到字段的jQuery插件,但我不确定在哪里触发它。
在$scope
上定义的方法内部,数据正在使用$http.get()
进行更新,但在这些匿名函数中运行resetFilterStyles()
不起作用,大概是因为Angular还没有处理已经更新的数据,所以resetFilterStyles()
执行的更改将被Angular对DOM的更新所撤销。
我试过设置一个$watch
处理程序,但这似乎是错误的地方运行我的函数,因为它似乎不采取,要么(并额外导致严重的错误在Angular中)。作为一个不使用Angular的人,我不知道该从哪里开始。
编辑
复位功能:
function resetFilterStyles() {
// desktop adv filters
var filterContainer = $('.advance-filter-dropdown');
$('select',filterContainer).selectbox('detach');
$('select',filterContainer).selectbox('attach');
$(".filter-select-small .sbOptions").niceScroll({cursorborder:"",cursorcolor:"#ccc",autohidemode: false});
// mobile adv filters
var filterContainer = $('.filter-wizard-mobile');
$('select',filterContainer).selectbox('detach');
$('select',filterContainer).selectbox('attach');
$(".filter-select-small .sbOptions").niceScroll({cursorborder:"",cursorcolor:"#ccc",autohidemode: false});
}
从AngularJS的角度来看,你不应该在控制器中修改DOM。你应该创建一个指令/组件来处理它。
但是,如果您确实必须使用jQuery(例如遗留项目),您可以使用将DOM修改放入$timeout:
$http.get("url").then(function() {
$timeout(function() {
// updateDom
}, 0);
});
相关文章:
- 对动态创建的元素运行jQuery.ech()
- 如何在加载角度函数后运行jQuery代码
- 在AJAX jQuery加载()之后运行jQuery代码
- 如何仅在设备基于 iOS 时运行 jQuery 代码
- 使用 .on 函数运行 jQuery 声明函数
- html代码没有运行jquery问题
- 仅在尚未运行jQuery UI的情况下运行动画
- 在运行jquery之前从5开始倒计时
- 在不重新运行jquery验证的情况下检查表单是否有效
- 在Angular App中运行jQuery函数
- 一旦设置了PHP查询字符串,如何运行jQuery脚本
- 如何在Ember中更改模板时运行JQuery代码
- 如果URL包含字符串don't运行jQuery函数
- 在php之前运行jQuery脚本
- 无法动态地将 jquery 添加到头部并运行 jquery 代码
- 在 HTML 中运行 jquery 脚本
- 如何在控制器外部和视图内在 AngularJs 中运行 jQuery
- 在具有相同类的每个表上运行 jquery
- 在 Angular 完成渲染后运行 JQuery 代码
- 如何选择当前 DIV ID 以使用该 ID 运行 Jquery