小编Pla*_*tic的帖子

Vue.js - 如何正确观察嵌套数据

我试图了解如何正确地观察一些道具变异.我有一个父组件(.vue文件)从ajax调用接收数据,将数据放入一个对象并使用它通过v-for指令呈现一些子组件,简化我的实现:

<template>
    <div>
        <player v-for="(item, key, index) in players"
            :item="item"
            :index="index"
            :key="key"">
        </player>
    </div>
</template>
Run Code Online (Sandbox Code Playgroud)

...然后在<script>标签内:

 data(){
     return {
         players: {}
 },
 created(){
        let self = this;
        this.$http.get('../serv/config/player.php').then((response) => {
            let pls = response.body;
            for (let p in pls) {
                self.$set(self.players, p, pls[p]);
            }
    });
}
Run Code Online (Sandbox Code Playgroud)

item对象是这样的:

item:{
   prop: value,
   someOtherProp: {
       nestedProp: nestedValue,
       myArray: [{type: "a", num: 1},{type: "b" num: 6} ...]
    },
}
Run Code Online (Sandbox Code Playgroud)

现在,在我的孩子"玩家"组件中,我正在尝试观察任何Item的属性变化,我使用:

...
watch:{
    'item.someOtherProp'(newVal){
        //to work with changes in "myArray"
    },
    'item.prop'(newVal){
        //to …
Run Code Online (Sandbox Code Playgroud)

javascript vue.js vue-resource vue-component

323
推荐指数
13
解决办法
19万
查看次数

使用Typescript在Vue数据对象中设置数据类型

我目前正在webpack项目中使用带有Typescript的Vue.js.

正如我所推荐的配置中所示tsconfig.json:

"strict": true,

在我的一个组件里面我有:

declare interface Player {
    cod: string,
    param: string
  }

export default Vue.extend({
    name: 'basecomponent',
    data() {
      return {
        players: []
      };
    },
    created() 
      let self = this
      axios.get('fetch-data')
        .then((response) => {
          let res: Players[] = response.data;
          for(let i = 0; i < res.length; i++){
              self.players.push(res[i]);
          }
        })
        .catch((error: string) => {
          console.log(error);
       });
    },
 });
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译时,我得到:

 error TS2345: Argument of type 'Player' is not assignable to parameter of type 'never'.
Run Code Online (Sandbox Code Playgroud)

因为我相信 …

typescript vue.js vuejs2

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

Vue.js在数组中观察嵌套属性

我有一个像这样的vue对象:

var vm = new Vue({
            el: '#app',
            data: {
                items: [],
                index: 0
            },

            });
Run Code Online (Sandbox Code Playgroud)

内部项目数组我将推送项目,如:

item1 = {
    a: 1,
    b: 'type',
    c: '3.556'
}
...
itemN = {
    a: n,
    b: 'type',
    c: '5.226'
}
Run Code Online (Sandbox Code Playgroud)

然后我会更新项目的"c"属性之一,我想设置一个观察者,一旦这个属性发生变化就会发出警告.

编辑:我也想知道女巫项目已经改变

javascript vue.js

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

异步 Promise 执行器函数

我有一个返回 Promise 的函数,如下所示:

async function processFolder(folder) {
    return new Promise(async (res) => {
        const table = {};
        const list = await getHTMLlist(folder);
        if (list.length === 0) res(table);
        for (let i = 0; i < list.length; i++) {
            await processFile(folder, list[i], table);
        }
        res(table);
    });
}
Run Code Online (Sandbox Code Playgroud)

我正在使用 ESLint 来警告我:

Promise 执行器函数不应该是异步的”,即no-async-promise-executor规则,由于 Promise 声明中的 async 关键字而引发错误。

我已经在代码的其他部分修复了同样的问题,其中 Promise 中只有一个等待,使用ESLint 文档这一页上建议的技术并在这个答案中显示,但在我的用例中我真的不知道如何重构代码以避免该错误。有任何建议欢迎提出

javascript promise async-await eslint

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

打字稿一般承诺退回类型

基本上,我正在尝试实现一个函数,该函数始终返回与参数相同的“类型”的实现承诺

因此,如果我使用布尔值进行调用,它将返回一个已实现的Promise,如果我使用一个字符串参数进行调用,它将返回一个已实现的Promise,依此类推。

到目前为止我尝试过的是:

const PromiseOK = <T>(val: T): Promise<T> => {
    return Promise.resolve(val);
};
Run Code Online (Sandbox Code Playgroud)

我不知道这是否是正确的方法,在任何情况下,如果我尝试获得Promise <void>,它都会中断

任何建议将不胜感激

generics promise typescript typescript-generics

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

Javascript变量冗余

我有一个简单的javascript函数,如下所示:

function wrapVar (passVar) {
    var option = {
        varValue: passVar,
        hide: true,
        params: { ..otherparams.. }
        };
    return option;
}
Run Code Online (Sandbox Code Playgroud)

Eclipse和Aptana验证表明局部变量'option'是多余的.但在这种情况下"冗余"的含义对我来说并不清楚,我应该怎样做才能避免呢?

javascript variables redundancy function

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

使用 file_get_contents 从 url 获取 JSON

我有一个以 JSON 格式提供一些数据的服务器。我尝试用通常的方式获取这些数据:

$res = file_get_contents($url);
$result = json_decode($res);
var_dump($result);
Run Code Online (Sandbox Code Playgroud)

但 $result 还是一个字符串。问题是来自 file_get_content 的数据在数据之前有一些字母数字字符串,在数据之后有一个零。

就像是:

215ba
{"@attributes":{"ticker":"FCA"},"info...... // here all json data
0
Run Code Online (Sandbox Code Playgroud)

我已经直接从 url 检查了 json 有效性,并且格式正确,我无法理解零和 215ba 来自哪里。

显然我可以去掉字符串,消除两者,但我想知道是否有更具体的解决方案而不是解决方法

PS:不幸的是我不能使用cURL

php json file-get-contents

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

Vue 3 - 组合 API - 如何获取道具原始值

我有一个接收一些道具并发出自定义事件的组件。我需要发出来将 props 的值作为参数传递。无论我做什么,我总是收到一个代理而不是原始值。这是我的实现的简化:

    //child-component
    <script setup lang="ts">
        import { ref, unref } from "vue";

        const props = defineProps<{
             category: { id: number, label: string};
        }>();

        const emit = defineEmits(["sendcategory"]);
        const category = ref(props.category);
        const cat = unref(category);

        function send() {
            emit("sendcategory", cat);
       
    }
    <template>
       <div  @click="send" >
            {{ category.value.label }}
       </div>
    </template>
Run Code Online (Sandbox Code Playgroud)

这是父组件的示例

    //parent-component
    <script setup lang="ts">

        import { ref } from "vue";
        import ChildComponent from "./ChildComponent.vue";

        const item = { id: 1, label: "testlabel" }

        function getcategory(category: {id: number, …
Run Code Online (Sandbox Code Playgroud)

vue.js vue-reactivity vue-props vue-composition-api

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