我想知道是否可能,使用角度一次性绑定,在模型更新后完全重新渲染视图/模板,也可以通过重新编译模板.
例如,在按下按钮时,可能在反应方式中工作:我更新模型并明确强制更新视图.
基本上这就是我想要实现的目标:
例如,在按下按钮时,可能在反应方式中工作:我更新模型并明确强制更新视图.
基本上这就是我想要实现的目标:
- // controller
- angular.module('app',[]).controller('AppCtrl',function($scope) {
- $scope.items = [
- {id: 1},{id: 2},{id: 3}
- ];
- $scope.addAndRefresh = function() {
- $scope.items.push({id: 4});
- // manually call render logic here???
- };
- });
- <!-- HTML template -->
- <div ng-repeat="item in ::items">
- {{item.id}}
- </div>
- <button ng-click="addAndRefresh()">Add</button>
我试图找出一些方法来优雅地做到这一点.我希望框架内置一些内容来刷新一次性绑定.我想出的就是使用ngIf删除我想要刷新的元素并将其添加回去.
这是一个演示.单击“添加项目”按钮,您将看到列表未刷新对重复的一次性绑定.检查刷新值并再次单击,项目将更新:
- var app = angular.module('demo',[]);
- app.controller('RefreshCtrl',function($scope,$timeout) {
- var counter = 4;
- $scope.visible = true;
- $scope.items = ['Item1','Item2','Item3'];
- $scope.addItem = function() {
- if ($scope.refresh) {
- $scope.visible = false;
- }
- $scope.items.push('Item' + counter);
- counter++;
- $timeout(function() {
- $scope.visible = true;
- });
- };
- });
- <script src="https://code.angularjs.org/1.3.17/angular.js"></script>
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
- <div ng-app="demo" ng-controller="RefreshCtrl" class="container">
- <button class="btn btn-default" ng-click="addItem()">Add Item</button>
- <input type="checkBox" ng-model="refresh" />Refresh Values
- <div ng-if="visible">
- <h3 ng-repeat="item in ::items">{{item}}</h3>
- </div>
- <p>Items Array: {{items}}</p>
- </div>