2016-11-22 2 views
3

У меня есть функция, и я сделал это таким образомКак объявить функцию в angularjs

JS:

function updateInstitution (isValid) {alert('hi') 
    if (!isValid) { 
     $scope.$broadcast('show-errors-check-validity', 'vm.form.institutionForm'); 
     return false; 
    } 
    var data = JSON.stringify(vm.institution); 
    httpService.put('institutions/' + vm.institution_id, data).then(function (results) { 
     if (results && results.data && results.data.details) { 
      vm.institution = results.data.details; 
      formInstitutionData('profile'); 
      commonService.showNotification('success', 'Institution Details updated successfully!'); 
      $('#institutionModal').modal('hide');  
     } 
    });  
} 
} 
    vm.updateInstitution = updateInstitution; 

Html:

<button type="button" class="btn btn-blue" ng-click="vm.updateInstitution(vm.form.institutionForm.$valid)" ng-bind="field.saveText"></button> 

Но я получение ошибки как

updateInstitution is not defined 

Может кто-нибудь предложить помощь. Спасибо.

JS:

(function() { 
    'use strict'; 

    // Institutions controller 
    angular 
      .module('institutions') 
      .controller('InstitutionsController', InstitutionsController); 

    InstitutionsController.$inject = ['$scope', '$state', '$window', '$timeout', 'httpService', 'Authentication', 'commonService']; 



    function active() { 
     httpService.get('institutions/' + vm.institution_id).then(function (results) { 
     if (results && results.data && results.data.details) { 
      vm.institutionCopyData = angular.copy(results.data.details); 
      formInstitutionData('all'); 
     } 
     }); 
    } 

    $scope.editInstitutionModal = function (type) { 
     $scope.field = {}; 
     $scope.showInstitutionModal = false; 
     if (type === 'basicedit') { 
      $scope.field.field_type = 'edit-institution.form.client'; 
      $scope.field.formName = 'Edit institution (' + vm.institutionObj.name + ')'; 
      $scope.field.saveText = 'Update'; 
     } 
     if(type === 'general'){ 
      $scope.field.field_type = 'add-general.form.client'; 
      $scope.field.formName = 'General Info'; 
      $scope.field.saveText = 'Save';   
     } 
     $timeout(function() { 
     $scope.showInstitutionModal = true; 
     $('#institutionModal').modal('show'); 
     $scope.$apply(); 
     }, 10); 
    }; 


    function updateInstitution (isValid) {alert('hi') 
     if (!isValid) { 
      $scope.$broadcast('show-errors-check-validity', 'vm.form.institutionForm'); 
      return false; 
     } 
     var data = JSON.stringify(vm.institution); 
     httpService.put('institutions/' + vm.institution_id, data).then(function (results) { 
      if (results && results.data && results.data.details) { 
       vm.institution = results.data.details; 
       formInstitutionData('profile'); 
       commonService.showNotification('success', 'Institution Details updated successfully!'); 
       $('#institutionModal').modal('hide');  
      } 
     });  
    } 
    } 
    } 
}()); 

Но я получаю сообщение об ошибке, как

updateInstitution is not defined 

Может кто-нибудь пожалуйста, предложите help.Thanks.

Но я получаю сообщение об ошибке, как

updateInstitution is not defined 

Может кто-нибудь пожалуйста, предложите help.Thanks.

+0

вы определили «контроллер как» определение, то можно использовать только таким образом? –

+0

Как насчет контекста определения функции? Не могли бы вы создать скрипку с вашим текущим состоянием? – bash0ne

+0

'var updateInstitution = function (isValid) {/ * ваши функции body * /}' –

ответ

4

вы должны заявить следующее в контроллере:

var vm = this; 
vm.updateInstitution = updateInstitution; 
+0

Привет, Matheno, я даже сделал это – MMR

+0

Можете ли вы опубликовать весь код своей директивы или воссоздать ситуацию в скрипке? Этого недостаточно для нас. – Matheno

+0

Я также вижу дополнительный '}'. Возможно, вы закрываете свой контроллер уже до определения связующих. – Matheno

-1
$scope.updateInstitution = function(){ 
    //Your code 
    } 
+0

вы видите ng-click как vm.updateInstitution, как это вызовет функцию? –

+0

Я бы хотел, чтобы комментарии с downvotes –

0

использовать $ scope.updateInstitution вместо функции updateInstitution(), поскольку связь мост между HTML и контроллером составляет $ Объем, или для использования vm.function вы определили $ scope.vm

+0

, но здесь я объявляю функцию в js – MMR

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