我们的应用程序没有使用角1.3 (但是,我们必须在更新之前检查依赖项),但是我需要在一些简单的文本属性中使用一次绑定从1.3。
写了这个指令来完成
return {
scope: {
'text': '='
},
restrict: 'AE',
template: '{{ text }}',
link: function link($scope, element, attrs) {
}
};它是这样使用的
<span static-text text="friend.name">问题在于它仍然在{{ text }}上添加了一个手表(来自巴塔朗的截图)

有没有一个简单的方式来显示一个文本没有永久手表?(看了看这个解决方案,但似乎太多了,不能显示一些文本)。
编辑:我最后使用了@arturgrzesiak和@PSL提出的解决方案,@arturgrzesiak的解决方案是在没有异步处理的情况下使用的,对于其他方案,我使用了@PSL。这两种解决方案都可以,但我会接受@PSL的解决方案,因为它涵盖了更多的场景。
发布于 2014-12-18 19:41:15
有一些好处,你有一个手表。一个示例是在实际代码中异步设置数据,这意味着绑定变量将在下一个摘要周期中得到更新。但在某些情况下,这是过分的(因此bindonce或其他监视删除库或1.3双向绑定存在)。以下是您可以做的一件事,只需使用一个手表,直到您获得数据,然后删除它,一旦您得到它,并手动设置从指令中的html。
return {
restrict: 'AE',
link: function link($scope, element, attrs) {
var unwatch = $scope.$watch(attrs.staticText, function(val){ //Set up temp watch
if(val){
unwatch(); //Unwatch it
element.html(val); //Set the value
}
});
}
};把它当作
<span static-text="friend.name">发布于 2014-12-18 19:36:13
解决方案比我在评论中提出的要复杂一些。
app.directive('once', function($parse){
return function(scope, element, attrs){
var parsed = $parse(attrs.once)(scope);
element.html(parsed);
}
});演示
https://stackoverflow.com/questions/27553064
复制相似问题