2016-03-12 3 views
0

У меня есть следующая директиваугловые переменные директивы синтаксического анализа функционирования

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

Так что мой вопрос в том, как передать переменную/объект функции, подобную этой?

ответ

1

Изменение параметров директивы связывания с =:

completeCallback: '=' 

Изменение HTML для ссылки на функцию (без ()):

complete-callback="frCTRL.completeUser" 

И вы будете хорошо идти.

+0

Могу я спросить, когда я должен использовать '&'? –

+0

вы не можете использовать = с функцией –

+0

@MarcRasmussen Вы используете '&', если хотите связать выражение без изменений. Обычно вы используете его, когда хотите вызывать функции без параметров или любые другие выражения. –

Смежные вопросы