AngularjS指令范围函数执行

时间:2014-01-29 09:54:03

标签: javascript angularjs angularjs-directive angularjs-scope

我有以下示例,我想在返回之前执行范围函数的内容,但它不是

directives.directive('itemElement', function() {
    return {
        restrict : 'E',
        scope : function(scope) {
            var itemModelVar = getValue(scope.item.testdata, field.caption);
            console.log('test');// this is not executed at all  for example
            return {
                item : '=item',
                field : '=field',
                schematypes : '=schematypes',
                itemmodel : itemModelVar
            };
        },
        templateUrl : 'partials/templates/item-simple.html'

    };
});

这导致itemModelVar未定义。

1 个答案:

答案 0 :(得分:1)

AngularJS指令定义不允许这种范围定义。指令范围可以通过3种方式分配。

  • scope: false
  • scope: true
  • scope: {}

在第一个场景中,指令中的范围与父范围相同。 在第二个场景中,父作用域在指令作用域中是原型继承的。 在第三种情况中,定义的范围称为隔离范围,因为此处范围不是继承的,而是一个特定于该指令的新标识符。隔离范围用于可重用组件。

尝试并理解angularjs中范围的行为。