我正在處理一個角度項目,並使用指令創建一個隔離範圍。該指令是這樣的:將模型綁定到函數調用返回值
var directive = module.directive('question', function() {
return {
restrict: 'E',
templateUrl: 'question.html',
transclude: true,
scope: {
quiz: '=quiz'
},
link: function (scope, attr, element) {
scope.$watch(function() {
return scope.quiz;
},
function (oldVal, newVal) {
scope.currentQuestion = scope.quiz;
});
}
};
});
因爲我不想綁定到我的控制器屬性(或領域),我創建了一個函數並調用指令是這樣的:
<question quiz="quiz.getCurrentQuestion()">... (transcluding stuff)</question>
請請注意,quiz
是我的控制器,使用as
-Syntax。
我處理指令的方式正在工作,但我不喜歡創建一個雙向綁定(對R值?)。
現在我試圖只使用&
綁定來傳遞函數,但這只是在link
函數中發生的奇怪結果,並且打破了一切。
我可以使用函數綁定使用&
並以某種方式調用函數(在我的模板或link
-函數中)來獲得我需要的結果,使其像雙向綁定一樣工作嗎?
謝謝你的幫助。
編輯
的getCurrentQuestion
- 函數的返回值是一個對象,它看起來像
{ questionNumber: 1, answers: [], getQuestionText() : function(...), ... }
所以沒有什麼特殊的,我希望......
編輯2
當我使用
...
scope: {
quiz: '&quiz'
}
然後在$watch
-function我得到
function(locals) { return parentGet(scope, locals); }
爲scope.quiz
如果我調用該函數像scope.quiz()
我得到undefined
作爲結果。
你可以舉一個quiz.getCurrentQuestion()的響應例子嗎? –
你可以創建一個plunkr嗎? –
@PankajParkar對不起,不,我不能,它是生產代碼,我只是問好奇心... –