当前位置: 首页 > 知识库问答 >
问题:

JavaScript从导入的脚本访问数据

郭志
2023-03-14

所以我试图从model.js导出/导入脚本,我使用这个

import * as model from './model.js';

这是模型的脚本。js

export const state = {
  recipe: {},
};
console.log(state.recipe);
export const loadRecipe = async function (id) {
  try {
    const res = await fetch(
      `https://forkify-api.herokuapp.com/api/v2/recipes/${id}`
    );
    const data = await res.json();
    if (!res.ok) throw new Error(`${data.message} (${res.status})`);
    console.log(data);
    let { recipe } = data.data;
    console.log(recipe);
  } catch (err) {
    console.error(err);
  }
};

这是渲染部分,我试图从model.js.访问食谱部分

const showRecipe = async function () {
  try {
    const id = window.location.hash.slice(1);
    if (!id) return;
    renderSpinner(recipeContainer);
    //1.Loading Recipe
    await model.loadRecipe(id);
    const { recipe } = model.loadRecipe.recipe;

我试图在这里访问配方部分:const{recipe}=model。装载配方;

但我正在变得不明确。请帮助我确定问题,是导出、导入还是我以错误的方式访问数据?另外,我应该如何将配方部分推送到状态配方?

非常感谢你。

共有3个答案

吴欣然
2023-03-14

如果你用香草JS试试:

// model.js
const loadRecipe = async function (id) {
    try {
        const res = await fetch(
            `https://forkify-api.herokuapp.com/api/v2/recipes/${id}`
        );
        const data = await res.json();
        if (!res.ok) throw new Error(`${data.message} (${res.status})`);
        console.log(data);
        let { recipe } = data.data;
        console.log(recipe);
    } catch (err) {
        console.error(err);
    }
};

...在另一个文件(call.js)...

const showRecipe = async function () {
    try {
        const id = window.location.hash.slice(1);
        if (!id) return;
        renderSpinner(recipeContainer);
        //1.Loading Recipe
        await model.loadRecipe(id);
        const { recipe } = model.loadRecipe.recipe;

...在您的html文件中。。。

<script type="text/javascript" src="model.js"></script> 
<script type="text/javascript" src="call.js"></script> 
阎昌勋
2023-03-14
export const state = {
  recipe: {},
};
console.log(state.recipe);
export const loadRecipe = async function (id) {
  try {
    const res = await fetch(
      `https://forkify-api.herokuapp.com/api/v2/recipes/${id}`
    );
    const data = await res.json();
    if (!res.ok) throw new Error(`${data.message} (${res.status})`);
    console.log(data);
    state.recipe = data.data.recipe;
    console.log(recipe);
  } catch (err) {
    console.error(err);
  }
};
await model.loadRecipe(id);
const { recipe } = model.state;

但是为什么你不想返回数据并将其保存到变量中呢?通常,您只需从loadRecipe函数返回食谱。

公孙令秋
2023-03-14

您可以分别从model.js导入值。

import { state, loadRecipe } from './model';

然后,可以在运行loadRecipe()方法后读取state值。

// ...
await loadRecipe(id);
console.log(state.recipe);

但是,我认为您忘记了在模型中的loadRecipe()函数中设置recipe值。js也一样。

js prettyprint-override">// get the recipe ...
// then ...
state.recipe = recipe;

 类似资料:
  • 问题内容: 如何导入驻留在父目录中的模块(python文件)? 这两个目录中都有文件,但是我仍然无法从父目录导入文件? 在此文件夹布局中,脚本B尝试导入脚本A: 脚本B中的以下代码不起作用: 问题答案: 您无需在Python中导入脚本,而可以导入模块。一些python模块也是可以直接运行的脚本(它们在模块级别上做了一些有用的工作)。 通常,最好使用绝对进口,而不是相对进口。 在: 如果您想作为脚本

  • 问题内容: 我积极使用脚本进行评分和汇总。我不知道的一件事是如何从脚本发出日志。我尝试了console.log,但后来没有成功。请让我知道,我该如何从常规脚本中发出日志。 问题答案: 这可以通过访问全局Elasticsearch记录器实例来完成。下面提供了它的常规示例。您也应该能够对javascript和其他脚本语言执行类似的操作。 因此,当您进行条款汇总时,可以执行以下操作- 一些来自Elast

  • 我需要一个groovy脚本的代码示例,它可以访问存储在我的文件系统中任何地方的xml文件。在这个xml文件中,我有数据库凭据,我的脚本需要访问数据库。下面是xml 提前致谢:)

  • 我试图从java代码调用python脚本。

  • 我有这样的设置: 所有.飞镖只是导入脚本1.飞镖和脚本2.dart并调用它们的主要。目标是在细节下有一堆可以单独运行的脚本。此外,我想要一个单独的 all.dart 脚本,可以一次运行所有脚本。这将使调试单个脚本更简单,但仍允许所有脚本运行。 all.dart 脚本1.飞镖 脚本2.dart 所以,这是工作,我看到运行时预期的打印语句all.dart但我有两个问题。 首先,我必须在详细信息下软链接

  • 我必须从我的 Groovy 脚本访问一个环境变量。我没有使用詹金斯。如何获取变量?