У меня есть директива Angular, которая ведет себя как ng-include, только с вкладками. (scope: true
).угловой - назначение из директивы
Чтобы получить и значение переменного набора родительского осциллографа я использую $ разобрано:
var modelFn = $parse(attrs.ngModel);
получение отлично работает, как это var value = modelFn(scope)
даже scope.$eval(attrs.ngModel)
, но присвоение не изменяет значение на родительской области, это фактически создает переменную на текущей области:
modelFn.assign(scope, { ... });
Это расстраивает, любая помощь? Спасибо заранее!
Update: Вот пример
HTML:
<myDirective ng-model="myData"></myDirective>
Директива:
{
replace: false,
scope: true,
template: '<button ng-click="changeData()"></button><div ng-include="templateUrl"></div>'
link: function(scope, element, attrs){
var modelFn = $parse(attrs.ngModel);
var value = modelFn(scope);
scope.templateUrl = data.replace('a', 'b');
scope.changeData = function(){
// Problem is here, assignment is on the current scope and not parent (or parent's parent and etc..)
modelFn.assign(scope, {name: 'new Value'});
}
}
}
почему вы не можете просто использовать 'сферу $ родительских '? почему '$ parse'? – Claies
Вы должны показать больше кода, чтобы объяснить, что вы пытаетесь сделать. Мне непонятно, почему и как вы используете 'ngModel' –
Это не всегда прямой родитель. Я не могу показать больше, босс не позволяет, так или иначе это объясняет проблему –