我想制作一个看起来像这样的指令(传入一个表达式):
<button ui:spin="form.submitting">Save</button>
但我不确定是否可以(或如何)访问form.submitting表达式。在过去,我做过这样的事情:
<button ui:spinner-button ui:spin="form.submitting">Save</button>
我在uiSpinnerButton指令中读取uiSpin属性,但我想知道如何“一体化”
有什么想法吗?
答案 0 :(得分:2)
您应该能够通过定义指令的范围来引用它,如下所示:
scope: {
spin: '=uiSpin'
}
在指令的链接功能中,它将是scope.spin
。
答案 1 :(得分:1)
对于非隔离范围,请使用$parse:
myApp.directive('uiSpin', function($parse) {
return function(scope, element, attrs) {
var model = $parse(attrs.uiSpin)
console.log(model(scope));
// If you want to change the value in your directive:
model.assign(scope, "???");
}
});
如果您不需要修改该值,则只需使用$ eval:
console.log(scope.$eval(attrs.uiSpin));
答案 2 :(得分:0)
我明白了,我的指示如下:
.directive('uiSpin', function() {
return {
link : function(scope, element, attrs, ngModel) {
scope.$watch(attrs.uiSpin, function() {
// do stuff here...
});
}
}
})
我根据来源ngShow
:https://github.com/angular/angular.js/blob/master/src/ng/directive/ngShowHide.js