如何访问AngularJS指令中的表达式?

时间:2013-07-25 13:41:24

标签: angularjs

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

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

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

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

我在uiSpinnerButton指令中读取uiSpin属性,但我想知道如何“一体化”

有什么想法吗?

3 个答案:

答案 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...

            });
        }
    }

})

我根据来源ngShowhttps://github.com/angular/angular.js/blob/master/src/ng/directive/ngShowHide.js