分配我有一個Angular指令,其行爲像ng-include,只是帶有選項卡。 所以它有一個分層範圍(scope: true
)。角 - 從指令
獲取和設置父作用域的變量值我使用$解析:
var modelFn = $parse(attrs.ngModel);
獲得優良工程這樣var value = modelFn(scope)
甚至scope.$eval(attrs.ngModel)
, 但分配父範圍不會改變的價值,它實際上創建在當前範圍的變量:
modelFn.assign(scope, { ... });
這是令人沮喪的,任何幫助嗎? 在此先感謝!
更新: 下面是一個例子
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 2015-02-09 22:24:03
你應該展示更多代碼來解釋你正在嘗試做什麼。我不清楚爲什麼以及如何使用ngModel – 2015-02-09 22:28:25
它並不總是直接的父母.. 我不能顯示更多,老闆不允許,反正這是解釋問題 – 2015-02-09 22:34:11