有没有办法强制刷新一次性绑定(v1.3中存在的本机一次性绑定+而不是BindOnce库),而不必重新编译整个DOM节点(这就是kcd-recompile指令似乎是这样做)
以下代码说明了我的问题:
<span ng-bind="::firstname" refresh-on="firstNameUpdated"></span>
Run Code Online (Sandbox Code Playgroud)
在这里,我希望将内容span
更新为当前值$scope.firstname
.
我想象的方式是使用指令refresh-on
,它在接收事件时强制刷新"firstNameUpdated"
.
Kas*_*wau 12
这里有无耻的商业广告,我一直在修修补补.
对于您的用例,它看起来像这样:
<span bind-notifier="{fName:firstName}" ng-bind=":fName:firstName"></span>
Run Code Online (Sandbox Code Playgroud)
fName
eventKey 在哪里,firstName
是被监视的表达式.
它有点像kcd-recompile(核心思想是一样的),但有一些主要的区别;
$parse
服务 - 以便不重新编译整个DOM节点.key:val
绑定的多个表达式.尽管如此,我并没有看到为单个 boundValue 做这件事的巨大收获.
为单个值运行常规更好(imho){{}}
.你只是$watch
在这里交换一个,kcd-recompile和bind-notifier只有在偶尔刷新多个值时才会真正闪耀.
Cra*_*aig 10
我不得不这样做,因为我使用的是角度数据表,我不希望每次带有5秒计时器的旋转木马改变图像时数据表都会保持刷新.但是,我也想在特定情况下刷新表格.
我所做的是将整个数据表包装在ng-if ="data"中,并设置一次性绑定到表中的所有ng-repeats(我有多个.一个动态设置列,一个用于行).
然后,当我想刷新表时,我首先这样做:
$timeout(function(){
$scope.$apply(function(){
$scope.data = null;
});
});
//Put code to set $scope.data to a new value here
Run Code Online (Sandbox Code Playgroud)
这会在重新创建之前从dom中删除整个表.重新创建时,一次性绑定将重新绑定.它有点贵,但它有效.
这就是你的答案.如果使用ng-if从DOM中删除带有一次性绑定的html部分,然后将其重新插入,则会重新绑定到新值.
归档时间: |
|
查看次数: |
7108 次 |
最近记录: |