将js文件中的指令函数加载到另一个控制器js文件

时间:2017-11-15 12:33:27

标签: javascript angularjs

我有一个主要的js文件,它在控制器中有监视 -



(function () {
    'use strict';

    angular
        .module('mainmodule')
        .controller('file1Ctrl', file1Ctrl);

    
    file1Ctrl.$inject = ['$scope','data'];
    function VendorDetailCtrl($scope,data){
    var vd = this;
    vd.data.id = data.id;
    activate();
    
    function activate() {
      $scope.$watch("vd.data.id", function (newValue, oldValue) {

                        if (newValue !== oldValue) {
                            callmainfunction();
                        }

                    });
    }
    })();
    




然后我在另一个js文件中有另一个指令 -



(function () {
    'use strict';

    angular
        .module('mainmodule')
        .directive('file2', file2)

    function file2() {
        var directive = {
            restrict: 'E',
            templateUrl: 'file2.html',
            scope: {
                data: '=',
            },
            
            controller: ['$scope',file2Ctrl],
            controllerAs: 'vm',
            bindToController: true
        }

        return directive;
        function file2Ctrl($scope, file2Ctrl) {
            var vm = this;
            activate();
            
            function activate(){
            neededfunc();
            }
            
            function neededfunc(){
            //do something
            }
      })();




我需要在第一个js文件中调用watch中的neededfunc()。我甚至尝试在指令中添加监视但它只在页面重新加载时触发,我需要在单击按钮Submit()后运行它。单击按钮Submit()时会触发手表。所以我需要知道如何在手表中使用该功能,或者在id值发生变化时我可以调用该功能。

1 个答案:

答案 0 :(得分:0)

向$ scope添加函数。$ root帮助。以下是代码 -



// Declare the function

$scope.$root.neededFunction = function(){
//Do Something here
}


//Call the function

$scope.$root.neededFunction();