如何从另一个脚本调用变量来执行函数

How can I call a variable from another script to execute a function

你好,我有一个名为 'script.js' 的脚本,问题是我那里有很多函数,我需要在 angular.

的开头执行这个函数
var appMaster = {

    preLoader: function(){

    }, 
    smoothScroll: function() {

    }
}

但我需要调用这个变量 appMaster

import '../../assets/js/script.js';
@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css'],
  encapsulation: ViewEncapsulation.None
})
export class HomeComponent implements OnInit {

  constructor() { }

  ngOnInit() {
    appMaster.preLoader();
    appMaster.smoothScroll();
  }
}

错误是appMaster没有未声明的变量。我怎样才能执行其他脚本中的函数?

如果你想在别处使用它,你需要从你的脚本文件中导出 appMaster 变量。

export let appMaster = {

    preLoader: function(){

    }, 
    smoothScroll: function() {

    }
};



import {appMaster} from '../../assets/js/script.js';
@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css'],
  encapsulation: ViewEncapsulation.None
})
export class HomeComponent implements OnInit {

  constructor() { }

  ngOnInit() {
    appMaster.preLoader();
    appMaster.smoothScroll();
  }
}

希望您喜欢使用 export/import 语句。

如果是,那么改变你 script.js 并使用 export

var appMaster = {
  preLoader: function(){}, 
  smoothScroll: function() {}
}
export default appMaster; 

在组件文件中使用 import

import anyName from "./path/to/file";

从 script.js 调用任何函数,例如

anyName.preLoader()

像这样尝试:

在项目资产的以下位置创建名为 javascript 的文件 => js => script.js

common.js

var comman = (function() {
    return {
        masonryBuild: function() {
            console.log('preLoader');
        }
    }
})(comman || {})

打开 .angular-cli.json 文件然后添加外部 javascript 文件路径如下

"scripts": [
  "../src/assets/js/comman.js"
]

在您的打字稿中声明脚本变量名称,例如:

component.ts

declare var comman: any;

export class Component {
    ngOnInit() {
        comman.masonryBuild();
    }
}
You can call varibale from anthoer script in Angular application.

Step 1. Create demo.js file in assests/javascript folder.

export function test1(){
    console.log('Calling test 1 function');
}

Step 2. Create demo.d.ts file in assests/javascript folder.

export declare function test1();

Step 3. Use it in your component
//User defined file path
import { test1 } from '../assets/javascript/demo'; 
 @Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  constructor() {
    console.log(test1());
  }
}


Note: js and .d.ts file name shoule be same