小编Gre*_*ett的帖子

返回VueJS方法的"本地代码"消息

使用以下代码时:https: //github.com/iamshaunjp/vuejs-playlist/blob/lesson-18/src/App.vue

我的浏览器显示function () { [native code] }它应显示"heeey cowboy"的位置.

知道发生了什么事吗?我在这里使用CLI 进行教程,所有内容都与提供的文件完全相同.

javascript vue.js

9
推荐指数
2
解决办法
4881
查看次数

v-model 和 v-for 与 Vuex 状态下的数组一起使用

我正在为选项卡式界面构建选项卡,用户可以在其中更改选项卡的标题。我想做的是这样的:

标记:

<div class="tabs" v-for="(tab, tabIndex) in tabs" :key="tab.id" >
  <input type="text" v-model:value="tabs(tabIndex)">
</div>
Run Code Online (Sandbox Code Playgroud)

计算属性:

computed: {
  scenes2: {
    get(tabIndex){
      return this.$store.state.tabs[tabIndex].title
    },
    set(value, tabIndex){
      this.$store.dispatch('setTabTitle', {value: value, tabIndex: tabIndex} )
    },
  },
},
Run Code Online (Sandbox Code Playgroud)

这当然行不通。在这里使用 v-model 的正确方法是什么,以便我可以将 Vuex 状态下v-modeltabs数组与相关索引相关联?

javascript vue.js

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

音频持续时间返回 NaN

在 Chrome 中使用 JavaScript 访问 HTML5 音频元素(.ogg 文件)。该文件确实可以正常播放,但不知何故它无法识别持续时间。

我只是抄了这段代码:https ://www.w3schools.com/jsref/prop_audio_duration.asp (我知道 w3schools 不是很好,但似乎还有其他问题......)

var x = document.getElementById("testTone").duration;
console.log("duration:"+x);  // duration:NaN

var y = document.getElementById("testTone");
y.play();   // works!
Run Code Online (Sandbox Code Playgroud)

元素...

<audio controls id="testTone">
    <source src="autoharp/tone0.ogg" type="audio/ogg">
</audio>
Run Code Online (Sandbox Code Playgroud)

javascript audio nan

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

一些"和弦"不适用于onkeydown(JavaScript)

某些键盘"和弦"(同时按下键的组合)将无法在浏览器中正确注册(Chrome和Firefox测试).例如,使用下面的代码,试试这个:

1)按"e"键(将记录"键69")

2)在按住"e"的同时,按"]"(它将记录"键221")

3)在按住"e"和"]"的同时,按"i"(这不能记录!)

4)但是,如果您放开"i"并按"o",它将成功记录"键79".

document.onkeydown = function(event){
    var key = event.keyCode;          
    console.log("key", key);
};
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这里发生了什么,如果有任何解决方法?对于上下文,我正在开发一个基于QWERTY的音乐应用程序,我希望能够演奏我的所有和弦.

我知道这keyCode是不赞成的,也许是这种行为的原因之一?

这个问题的正确方法是什么?

在这里演示:https://jsfiddle.net/nt0ad2ap/

javascript keycode

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

Vuex getter中的JSON对象副本

我在Vuex getter中发现了JSON的一些奇怪行为:看来这是导致按引用传递类型的问题的原因。对于上下文-我正在开发一个音乐应用程序,它将具有多个“场景”,每个场景都包含“曲目”的集合(类似于Ableton Live)。

这是我的吸气剂:

  newTrack: state => {
    let newTrack = JSON.parse(JSON.stringify(state.newTrackDefaults))
    return newTrack
  },
Run Code Online (Sandbox Code Playgroud)

这是它所指的对象:

  newTrackDefaults: {
    tune: [],
    // and other properties
  },
Run Code Online (Sandbox Code Playgroud)

然后由一个动作调用它:

  setUpNewScene: context => {
    let newScene = JSON.parse(JSON.stringify(context.state.newSceneDefaults))
    let newTrack = context.getters.newTrack  
    console.log(newTrack) // this reveals that the problem is from the getter 
    newScene.tracks.push(newTrack)
    context.commit('addNewScene', newScene)
 }
Run Code Online (Sandbox Code Playgroud)

因此,此代码的问题是,当我在第一个场景的轨道上添加项目(音高参考),然后添加新场景时,场景会自动接收与第一个场景相同的轨道。这反映在Vuex状态中(根据DevTool),而不仅仅是渲染。而且,当用户更新第一场景上的轨道时,新场景上的轨道相应地改变。因此,本能地感觉就像是按引用传递类型的错误。

通过各种console.log实验,我发现吸气剂正在返回“填充”轨迹。通过跳过getter并将操作编写为:

  setUpNewScene: context => {
    let newScene = JSON.parse(JSON.stringify(context.state.newSceneDefaults))
    let newTrack =  JSON.parse(JSON.stringify(context.state.newTrackDefaults))
    console.log(newTrack) // this works fine
    newScene.tracks.push(newTrack)
    context.commit('addNewScene', …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js

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

在IIFE上使用.call(this)

我见过一个IIFE .call(this),而不仅仅是().为什么要这样做?

上下文:https://github.com/dmauro/Keypress/blob/development/keypress.js

(据我所知,它this会引用window对象 - 无论如何都会调用IIFE.这似乎是多余的.)

javascript

5
推荐指数
2
解决办法
126
查看次数

测试 JavaScript 对象字面量中是否存在键名

在我正在制作的文本冒险中,房间的对象文字如下所示:

room : {
  // some info,
  exits : {
    north : -1,
    east : "house",
    south : "forest",
    west : -1
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的功能中移动它说:

if (room["exits"][direction] !== -1) {// go that way}
else {print "you can't go that way!"}
Run Code Online (Sandbox Code Playgroud)

现在我想通过测试相关方向的键是否存在于对象中来节省空间。所以文字会去:

room : {
  // some info,
  exits : {
    east : "house",
    south : "forest"
  }
}
Run Code Online (Sandbox Code Playgroud)

……我的if陈述应该是什么样的?确定给定键名是否存在于对象中的“正确”方法是什么?

javascript object-literal

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

VueJS的$ emit和Watchers性能成本

我构建了一个音乐应用程序(使用Vue和ToneJS),在该应用程序中,用户可以创建循环播放的曲目,并根据用户的选择以不同的方式进行更改。这利用了一套相当复杂的缩放计数器机制。建立了音乐功能之后,我正在研究“进度条”,该进度条显示了下一个过渡何时发生。

当前,我这样做的方式是计算所需的总步骤(每个注解是一个“步骤”),并将其与每个计数器的进度(在Vuex状态下)进行比较。就代码而言,这会花费很多精力。

更好的方法可能是每次执行步骤时都使用$ emit发送一个“滴答声”,带有进度条的组件将拾取该滴答声并将其与所需步骤进行比较。或者,在组件上使用观察程序可以检测到更改并发送报价。

但是,我已经在应用程序中遇到了一些计时性能问题,而计时对此至关重要。我是一个相对较新的开发人员,还不太了解性能。因此,我想知道的是,使用“ $emit观察者”有多“昂贵” ?由于它将被附加到应用程序的“马达”中,因此将不断对其进行调用。是否存在任何可能使齿轮变粘的危险?

performance vue.js

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

本地计算机上的 Img Src

我想这是一个常见的初学者问题,但我没有找到完全涵盖我的问题的答案:我无法链接到本地​​计算机上的图像。

我正在为 wordpress 安装制作主题(在使用 Xampp 运行 Windows 7 的戴尔上)。我的index.php文件位于:

C:\xampp\htdocs\tutorials\wordpress\wp-content\themes\LeftColumn\index.php
Run Code Online (Sandbox Code Playgroud)

我想展示的图像是:

C:\xampp\htdocs\tutorials\wordpress\wp-content\themes\LeftColumn\images\pmsplogo.jpg
Run Code Online (Sandbox Code Playgroud)

...虽然我尝试了很多变化,但不知何故,我放入的任何东西<img src=""/>似乎都不起作用。谁能解释一下针对我的情况进行编码的正确方法是什么?

请注意,它将正确显示来自外部网站的图像(例如:http : //littlewebhut.com/images/eightball.gif

谢谢!

html image local

3
推荐指数
2
解决办法
5万
查看次数

使用 vuex v-model 指定对象值

我正在协调输入元素与 Vuex 状态的对象的键。假设我有这个对象:

myObj: { foo: 1, bar: 2 }
Run Code Online (Sandbox Code Playgroud)

以及组件中的计算属性:

myObjVals: {
  get(){ return this.$store.state.myObj },
  set(//?) { //? },
},
Run Code Online (Sandbox Code Playgroud)

在模板中,我可以商店获取值:

<input type="number" v-model="myObjVals['foo']"/>  // displays "1"
<input type="number" v-model="myObjVals['bar']"/>  // displays "2"
Run Code Online (Sandbox Code Playgroud)

但是当我调整输入的值时,我收到错误消息:“不要在突变处理程序之外改变 vuex 存储状态。”

这里一个明显的解决方案是为... 中的每个键使用不同的计算属性,myObj但对于较大的对象,这会变得重复/繁琐。我想知道是否有任何方式的代码作为此我试图以上,即,仅使用一个计算的属性来引用对象两者getset功能v-model

javascript vue.js

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

标签 统计

javascript ×8

vue.js ×5

audio ×1

html ×1

image ×1

keycode ×1

local ×1

nan ×1

object-literal ×1

performance ×1