Skip to content

Commit e760dd8

Browse files
committed
Fix scope issues
1 parent a000f03 commit e760dd8

1 file changed

Lines changed: 18 additions & 14 deletions

File tree

bindonce.js

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -106,19 +106,20 @@
106106
{
107107
var binder = this.binders[data];
108108
if (this.group && this.group != binder.group ) continue;
109-
var value = $scope.$eval((binder.interpolate) ? $interpolate(binder.value) : binder.value);
109+
var value = binder.scope.$eval((binder.interpolate) ? $interpolate(binder.value) : binder.value);
110110
switch(binder.attr)
111111
{
112112
case 'if':
113113
if (toBoolean(value))
114114
{
115-
binder.transclude($scope.$new(), function (clone)
115+
binder.transclude(binder.scope.$new(), function (clone)
116116
{
117117
var parent = binder.element.parent();
118118
var afterNode = binder.element && binder.element[binder.element.length - 1];
119119
var parentNode = parent && parent[0] || afterNode && afterNode.parentNode;
120120
var afterNextSibling = (afterNode && afterNode.nextSibling) || null;
121-
angular.forEach(clone, function(node) {
121+
angular.forEach(clone, function(node)
122+
{
122123
parentNode.insertBefore(node, afterNextSibling);
123124
});
124125
});
@@ -143,23 +144,25 @@
143144
case 'src':
144145
binder.element.attr(binder.attr, value);
145146
if (msie) binder.element.prop('src', value);
147+
case 'attr':
148+
angular.forEach(binder.attrs, function(attrValue, attrKey)
149+
{
150+
var newAttr, newValue;
151+
if (attrKey.match(/^boAttr./) && binder.attrs[attrKey])
152+
{
153+
newAttr = attrKey.replace(/^boAttr/, '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
154+
newValue = binder.scope.$eval(binder.attrs[attrKey]);
155+
binder.element.attr(newAttr, newValue);
156+
}
157+
});
158+
break;
146159
case 'href':
147160
case 'alt':
148161
case 'title':
149162
case 'id':
150163
case 'value':
151164
binder.element.attr(binder.attr, value);
152165
break;
153-
case 'attr':
154-
angular.forEach(binder.attrs, function(attrValue, attrKey) {
155-
var newAttr, newValue;
156-
if (attrKey.match(/^boAttr./) && binder.attrs[attrKey]) {
157-
newAttr = attrKey.replace(/^boAttr/, '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
158-
newValue = $scope.$eval(binder.attrs[attrKey]);
159-
binder.element.attr(newAttr, newValue);
160-
}
161-
});
162-
break;
163166
}
164167
}
165168
this.ran = true;
@@ -253,7 +256,8 @@ function(boDirective)
253256
value : attrs[boDirective.directiveName],
254257
interpolate : boDirective.interpolate,
255258
group : name,
256-
transclude : transclude
259+
transclude : transclude,
260+
scope : scope
257261
});
258262
}
259263
}

0 commit comments

Comments
 (0)