У меня есть следующая директиваугловые переменные директивы синтаксического анализа функционирования
feedBackModule.directive("responseCollection", ['deviceDetector', function (deviceDetector) {
return {
restrict: "E",
templateUrl: 'js/modules/Feedback/directives/feedbackResponse/collection.html',
scope: {
collections: '=',
completeCallback: '&'
},
link: function (scope, element, attr) {
scope.endCollection = function() {
scope.completeCallback(scope.collections);
}
}
};
}]);
Эта директива (как вы можете видеть) принимает функцию, которая помещается в следующем контроллере:
feedBackModule.controller('FeedbackResponseController', ['$state', 'Query', 'feedbackSkillService', 'feedbackFactory', 'feedbackResponseService', function ($state, Query, SkillFactory, feedbackFactory, feedbackResponseService) {
var num_users = null;
var user_index = 0;
this.activeUser = null;
this.final = false;
this.feedback = feedbackResponseService.getFeedback();
this.completeUser = function (collections) {
this.activeUser.start = false;
if(user_index < (num_users-1)){
user_index++;
this.activeUser = this.feedback.feedback_has_target_users[user_index];
}
else
{
this.final = true;
}
}
}]);
Html:
<response-collection complete-callback="frCTRL.completeUser()" collections="frCTRL.feedback.feedback_collections" ng-if="frCTRL.activeUser.start && !frCTRL.final"></response-collection>
Функция работает и корректно вызывается, но переменная, которую он анализирует, является lways undefined
Так что мой вопрос в том, как передать переменную/объект функции, подобную этой?
Могу я спросить, когда я должен использовать '&'? –
вы не можете использовать = с функцией –
@MarcRasmussen Вы используете '&', если хотите связать выражение без изменений. Обычно вы используете его, когда хотите вызывать функции без параметров или любые другие выражения. –