1

嗨,我有一个名为“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 没有未声明的变量。如何在其他脚本中执行函数?

4

4 回答 4

0

如果您想在其他地方使用它,您需要从脚本文件中导出 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();
  }
}

于 2017-11-09T05:34:16.130 回答
0

希望您会喜欢使用导出/导入语句。

如果是这样,请更改您的 script.js 并使用export

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

在组件文件中使用import

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

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

anyName.preLoader()
于 2017-11-09T05:37:12.047 回答
0

试试这样:

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

common.js

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

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

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

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

组件.ts

declare var comman: any;

export class Component {
    ngOnInit() {
        comman.masonryBuild();
    }
}
于 2017-11-09T06:02:41.543 回答
0
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
于 2017-11-17T10:44:11.010 回答