小编Aba*_*ara的帖子

使用querySelector时的怪异行为

据我了解,使用时element.querySelector(),查询应从特定元素开始。

但是,当我使用下面的代码运行时,它始终选择DIV特定元素中的第一个标签。

const rootDiv = document.getElementById('test');
console.log(rootDiv.querySelector('div').innerHTML);
console.log(rootDiv.querySelector('div > div').innerHTML);
console.log(rootDiv.querySelector('div > div > div').innerHTML);
console.log(rootDiv.querySelector('div > div > div > div').innerHTML);
console.log(rootDiv.querySelector('div > div > div > div > div').innerHTML);
Run Code Online (Sandbox Code Playgroud)
<div>
  <div>
    <div id="test">
      <div>
        <div>
        This is content
        </div>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

如您所见,前几个结果是相同的。这是一个错误吗?还是会从文档开始查询?

javascript

32
推荐指数
2
解决办法
1049
查看次数

使用导入语法而不是使用 require 时,Mongoose 未定义

所以我的模块是这样写的

import mongoose from 'mongoose';

export class MyModule {
   constructor(){
       //do
   }

   create(str){
      mongoose.connect(str); //cannot find property 'connect' of undefined
   }

}
Run Code Online (Sandbox Code Playgroud)

使用导入语法时,cannot find property 'connect' of undefined出现错误;它在使用 require 时按预期工作。

奇怪的是,通过导入语法导入单个属性按预期工作,

import { connect } from 'mongoose'
Run Code Online (Sandbox Code Playgroud)

但由于其他一些原因,我需要访问整个 ORM。

为什么会这样?难道我做错了什么?公平地说,我在 ES6 模块系统、TypeScript 和 Node.js 方面没有太多经验,所以我可能在这里遗漏了一些东西。


我在 Node.js 和 NestJS 上运行它,在打字稿文件上。

javascript mongoose typescript ecmascript-6 nestjs

5
推荐指数
1
解决办法
980
查看次数

从包含数组属性的基础对象中选择性地创建对象的新数组

我有一个名为的对象obj,它将用作创建某种格式的对象的新数组的基础。

我的基础对象:

var obj={
  "en": [{
    "faq": "faq",
    "about": "about"
    }],
  "hi": [{
    "faq": "aksar-poochhe-jaane-vaale",
    "about": "hamaare-baare"
    }]    
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个getObj()接受两个参数lang和基础对象的函数obj


范例场景

当我打电话时:

getObj("en", obj);
Run Code Online (Sandbox Code Playgroud)

我应该得到:

[{
  "url": "/en/faq",
  "links": [
     { lang: 'en', url: '/en/faq' },
     { lang: 'hi', url: '/hi/aksar-poochhe-jaane-vaale' }
   ]
 },
 {
  "url": "/en/about",
  "links": [
     { lang: 'en', url: '/en/about' },
     { lang: 'hi', url: '/hi/hamaare-baare' }
   ]
 }]
Run Code Online (Sandbox Code Playgroud)

当我打电话时:

getObj("hi", obj);
Run Code Online (Sandbox Code Playgroud)

我应该得到:

 [{
  "url": "/hi/aksar-poochhe-jaane-vaale", 
  "links": [ …
Run Code Online (Sandbox Code Playgroud)

javascript arrays object ecmascript-6

5
推荐指数
1
解决办法
101
查看次数

直接使用原生 JavaScript 或 jQuery 方法获取元素的包含块

是否有内置的 DOM API 或 jquery API 来获取元素的包含块

我不是在问如何获取元素的包含块。我只是问是否已经有了轮子,所以我不必重新发明它。如果没有,我可以这样做:

let containingBlock = $("#five")
                      .parents()
                      .find(parent => parent.css("position") === ...);
Run Code Online (Sandbox Code Playgroud)

对于以下 HTML,例如:

<div id = "one">
    <div id = "two" style = "position: absolute;">
        <div id = "three">
            <div id = "four">
                <div id = "five" style = "position: absolute;"></div>
            </div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

javascript jquery

5
推荐指数
1
解决办法
329
查看次数

Vue似乎是在更新隐藏表单输入值之前提交表单

我有一个动态表单的Vue应用程序,它有两个按钮,我需要在请求中发送一个单击的按钮.我这样做是通过更新隐藏输入字段的值,然后使用jQuery提交表单.出于某种原因,虽然我第一次点击设置隐藏输入的按钮最初true发送false但后续点击将发送适当的值.

下面是我实际上没有实际jQuery请求的小片段.我可以看到值正确更新,所以我不确定它是否是竞争条件,或者我是否遗漏了一些明显的东西.

<form id="myVueForm">
  <input type="hidden" name="submitEdit" :value="submitEdit">
  <button type="button" @click="submitEdit = true">Submit Edit</button>
  <button type="button" @click="submitEdit = false">Submit without Edit</button>
</form>

var myApp = new Vue({
  el: '#myVueForm',
  data: function() {
    return {
      submitEdit: false
    }
  },
  watch: {
    'submitEdit': function(value) {
      console.log(this.submitEdit, "submitEdit value");
      console.log('Submitting form!');
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

https://codepen.io/anon/pen/jvGXLG?editors=1111

javascript vue.js vuejs2

2
推荐指数
1
解决办法
129
查看次数

VSCode:如何使 Beautify 和 Emmet 在 .tpl 文件(Smarty)上运行?

我正在 VSCode 上开发一个旧项目,我发现 html 格式化程序和 emmet 语法不适用于 .tpl(Smarty 模板引擎)文件。

这给我的工作流程带来了不便,不幸的是,我在市场上没有看到任何针对此的扩展。我很高兴知道如何在其他奇怪的文件格式上运行扩展(特别是 Beautify 和 Emmet)。

smarty emmet js-beautify visual-studio-code

2
推荐指数
1
解决办法
1903
查看次数

导入后导出模块未定义

一切正常,我做了一些更改,现在我的服务未定义。

我的_service文件夹中有一项基本服务

import config from 'config';
import { authHeader } from '../_helpers';

export const subscriptionService = {
    getFullMenu
};

function getFullMenu() {
    const requestOptions = {
        method: 'GET',
        headers: authHeader()
    };

    return fetch(`${config.apiUrl}/subscriptions/fullmealselection`, requestOptions).then(handleResponse);
}

function logout() {
    // remove user from local storage to log user out
    localStorage.removeItem('user');
}

function handleResponse(response) {
    return response.text().then(text => {
        const data = text && JSON.parse(text);
        if (!response.ok) {
            if (response.status === 401) {
                // auto logout if 401 response returned from api …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vuex

1
推荐指数
1
解决办法
51
查看次数