我想知道是否可能,使用角度一次性绑定,在模型更新后完全重新渲染视图/模板,也可以通过重新编译模板.
例如,在按下按钮时,可能在反应方式中工作:我更新模型并明确强制更新视图.
基本上这就是我想要实现的目标:
例如,在按下按钮时,可能在反应方式中工作:我更新模型并明确强制更新视图.
基本上这就是我想要实现的目标:
// 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>