我正在尝试在指令中实现“一次性绑定”,不幸的是它不起作用。
我寻找了类似的问题,但解决方案似乎并不成立。
首先,我尝试一次性绑定一个属性,我在控制器内部更改了它的值,并在 html 上放置 {{::name}} 文本。
这工作得很好,但此刻我开始更改指令中的“名称”值 - 它在所有指令中都发生了变化并忽略了一次性绑定。
有什么帮助吗?
JS:
.directive('smallCard', function(CONSTS){
return{
restrict: 'E',
replace: true,
template: '<div>{{::name}}</div>',
//templateUrl: 'small-card.html',
link: function(scope, elem, attrs) {
scope.name++;
}
}
})
HTML:
<md-card-actions layout="row" layout-align="start center">
<md-button>create {{::name}}</md-button>
</md-card-actions>
答:最终解决方案是创建一个隔离范围,只需在指令中添加“范围:{}”即可解决问题:
.directive('smallCard', function(CONSTS){
return{
restrict: 'E',
replace: true,
**scope:{},**
template: '<div>{{::name}}</div>',
//templateUrl: 'small-card.html',
link: function(scope, elem, attrs) {
scope.name++;
}
}
})