我有以下示例,我想在返回之前执行范围函数的内容,但它不是
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未定义。
答案 0 :(得分:1)
AngularJS指令定义不允许这种范围定义。指令范围可以通过3种方式分配。
scope: false
scope: true
scope: {}
在第一个场景中,指令中的范围与父范围相同。 在第二个场景中,父作用域在指令作用域中是原型继承的。 在第三种情况中,定义的范围称为隔离范围,因为此处范围不是继承的,而是一个特定于该指令的新标识符。隔离范围用于可重用组件。
尝试并理解angularjs中范围的行为。