Использование объекта Javascript в отдельном файле - PullRequest
1 голос
/ 01 февраля 2020

Я использую Nativescript- vue. Я пытаюсь добавить в свое приложение логику c, которая не отображает html или что-либо еще, это просто библиотека, которая выполняет вычисления. Я не могу понять, как просто использовать это, я продолжаю получать сообщения об ошибках.

Вот то, что я попробовал.

винтовка. js

 export function Rifle () { // no function name
   this.firstName = "hi";
  }

также пробовал это и другие:

const observableModule = require("tns-core-modules/data/observable");


function Rifle () { // no function name
   const myRifle = observableModule.fromObject({
        firstName:"hello"
   })

   return myRifle;
  }

  module.exports = Rifle;

затем в моем файле приложения. js, я импортирую его.

import {Rifle} from "./ballisticlibrary/rifle";

Я также попытался использовать Require.

Затем я пытаюсь использовать его в методе vue, вызываемом при нажатии кнопки.

  GetRifle()
  {
     // return "hi";
   this.msg= this.Rifle.firstName;

  }

Продолжает выдавать ошибку:

Cannot read property 'firstName' of undefined"
System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onClick failed
System.err: TypeError: Cannot read property 'firstName' of undefined

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020
  • переместил комментарий в ответ для лучшего форматирования *

Я никогда не использовал vue, но я ожидаю, что экспортируемое значение Rifle будет функцией или классом. Это предполагает, что вам нужно сначала создать экземпляр этого класса, прежде чем использовать его. Кроме того, я думаю, что вы не можете получить доступ к импортированным классам, используя «this». ты можешь попробовать.

// your rifle class
export function Rifle () {
    this.name = "AK-47";
    this.damage = 5;
    this.fire = () => {
        console.log('Bang bang, '+ this.damage + ' damage done by ' + this.name);
    }
}

// then import your rifle and instantiate it

const ak = new Rifle();
ak.fire();

// logs out Bang bang, 5 damage done by AK-47
0 голосов
/ 01 февраля 2020

Проблема здесь this.firstName. Прочитайте это , чтобы лучше понять, как использовать this в js.

...