更改值后刷新角度视图
Refreshing Angular view after changing a value
因为我正在处理的页面是一个遗留页面,有很多死/活/僵尸代码,所以我无法将其全部粘贴到这里。因此,我试图用示例代码发布我的问题摘要。
我有一个页面,其中的数据来自Angular。这是一堆产品。每个产品都有一个名为showProduct
的属性,用于确定是否应显示该产品。首次从后端提取showProduct
属性时,该属性被设置为1
。在渲染html时,在每个产品div中,我都有ng-show={{product.showProduct}}
。ng-show
第一次加载时工作正常,显示所有产品。如果我从后端将任何产品的此值设置为0,则它是隐藏的。
一旦产品被加载,如果用户点击一个按钮,我需要隐藏其中的一些产品。这个按钮点击处理程序在jQuery中。
所以我做了以下事情:
prod = angular.element($('#product-section')).scope().ProductList;
prod
现在是一系列具有其属性的产品。现在我遍历这个数组,检查有问题的属性(根据单击的按钮我知道),并根据每个产品的值,将showProduct
属性设置为0
。
但是,这不会更新视图以隐藏该产品。如果我console.log
angular.element($('#product-section')).scope().ProductList
,我可以看到它的showProduct已经正确地从1更新到0。
我假设我需要做一些事情,以便在页面中"重新解析"和刷新productList。但是我不知道该怎么做。
我只需要一些关于我可能遗漏的概念性提示,因为我知道为我的情况提供"特定"的代码提示是很困难的。
简而言之,一旦我从外部更新了角度值,我该如何告诉angular重新分析代码并刷新视图?类似于模型在更新文本框中的数据时自动发生的情况。。。
我试着做angular.element($('#product-section')).scope().$apply();
,但没有成功。
任何指示都将不胜感激。
试试这个:
$scope.$apply(function() {
angular.element($('#product-section')).scope().ProductList;
});
通过这样做,您告诉AngularJS注意所附代码的执行情况,并相应地更新视图。
只是一些考虑:难道你不能直接更新模型而不是调用外部代码吗?始终建议使用这种方法。
Angular使用双向数据绑定,当您使用Angular Controller(或Directive等)来定义模型时,这种绑定有效。在你的HTTML中,你使用这样的东西(非常粗糙的例子):
<div ng-controller="myProductListController>"
<div ng-repeat="(index, product) in productList">
<div>{{ product.name }}</div>
</div>
</div>
productList
在您的myProductListController
中,并且在ng-controller
指令的范围(您的型号)中可用。
现在,每次控制器中的productList
发生更改时,视图都会自动更新。
作用域(模型)绑定到某个角度控制器(或指令,…)。因此,为了在这里使用双向绑定,您需要有它。
希望对有所帮助
- 在不刷新整个网格的情况下,向Asp.net网格视图添加新行
- AngularJS:点击选项卡刷新视图中的数据
- 在网格视图的自动刷新过程中,设置内部网格视图文本框的可见性
- 如何在不刷新页面的情况下每次单击一组选项卡时刷新视图内容窗格
- 使用 Jasmine 测试主干视图时,浏览器页面不断刷新
- 将数据传递到视图而不刷新浏览器
- KNOCKOUT ko.observableArray 不会刷新视图
- 是否有任何事件“;在$scope摘要完成时”;或“;在视图刷新时”;在Angular.js中
- PostgreSQL实体化视图在刷新时阻止读取
- 在asp.net mvc 3中,如何在不刷新页面的情况下从部分视图获取值到父视图
- 以编程方式刷新引导树视图
- IE8使用兼容性视图强制刷新网页
- Angular2刷新阵列推送视图
- 定期轮询数据库,Rails 视图更新而不刷新
- 如何使用映射插件刷新挖空视图模型
- 如何在 AngularJS 中刷新时重定向到不同的视图
- 在表单提交后,无法使用 mvc razor 中的 ajax 从其中的另一个分部视图刷新分部视图
- 如何使用angular.js视图刷新页面
- 局部视图刷新和脚本不起作用
- 剑道 UI 拆分视图刷新窗格内容