【问题标题】:How to declare a function in angularjs如何在angularjs中声明一个函数
【发布时间】:2016-11-22 09:17:25
【问题描述】:

我有一个函数,我就是这样做的

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

谁能提供帮助。谢谢。

但我得到的错误是

updateInstitution is not defined

谁能提供帮助。谢谢。

【问题讨论】:

  • 你定义了“controller as”那么只能这样使用吗?
  • 函数定义的上下文呢?你能不能用你当前的状态创造一个小提琴?
  • var updateInstitution = function(isValid) { /* your functions body */ }
  • 你能发布你的整个指令结构吗?
  • 你定义$scope.vm = vm;了吗?

标签: javascript angularjs angular


【解决方案1】:

您应该在控制器中声明以下内容:

var vm = this;
vm.updateInstitution = updateInstitution;

【讨论】:

  • 你能把你的指令的全部代码贴出来,或者在小提琴中重现这种情况吗?这对我们来说还不够。
  • 我还看到了一个额外的}。也许您在定义可绑定对象之前已经关闭了控制器。
  • 没有问题,希望我们能提供帮助。
【解决方案2】:

你使用 $scope.updateInstitution 而不是 function updateInstitution() ,因为 html 和控制器之间的通信桥梁是 $scope, 或者使用 vm.function 你定义了 $scope.vm

【讨论】:

  • 但是这里我在js中声明函数
【解决方案3】:
 $scope.updateInstitution = function(){
     //Your code
  }

【讨论】:

  • 你看到 ng-click 作为 vm.updateInstitution 这将如何调用函数?
猜你喜欢
  • 2016-03-13
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
相关资源
最近更新 更多