0

我想做一个看起来像这样的指令(传入一个表达式):

<button ui:spin="form.submitting">Save</button>

但我不确定是否可以(或如何)访问 form.submitting 表达式。在过去,我做过这样的事情:

<button ui:spinner-button ui:spin="form.submitting">Save</button>

我在 uiSpinnerButton 指令中阅读了 uiSpin 属性,但我想知道如何“一体式”执行此操作

有任何想法吗?

4

3 回答 3

2

您应该能够通过定义指令的范围来引用它,如下所示:

scope: {
    spin: '=uiSpin'
}

在指令的链接函数中,它将是scope.spin.

于 2013-07-25T13:49:01.817 回答
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));
于 2013-07-25T14:42:36.483 回答
0

我明白了,我的指令如下所示:

.directive('uiSpin', function() {
    return {
        link : function(scope, element, attrs, ngModel) {

            scope.$watch(attrs.uiSpin, function() {

                // do stuff here...

            });
        }
    }

})

我将此基于源ngShowhttps ://github.com/angular/angular.js/blob/master/src/ng/directive/ngShowHide.js

于 2013-07-25T14:52:37.563 回答