Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复vue.js创建的钩子中的TypeError?_Vue.js - Fatal编程技术网

如何修复vue.js创建的钩子中的TypeError?

如何修复vue.js创建的钩子中的TypeError?,vue.js,Vue.js,错误: vue.js:597[vue warn]:创建的钩子中出现错误:“TypeError:handlers[i]。调用不是函数” 发现于 ---> vue.js vue.js:597 [Vue warn]: Error in created hook: "TypeError: handlers[i].call is not a function" found in ---> <StageExecs> 测试 Vue.组件(“作业”{ 分隔符:['[',']]'],

错误:

vue.js:597[vue warn]:创建的钩子中出现错误:“TypeError:handlers[i]。调用不是函数”
发现于
---> 
vue.js

vue.js:597 [Vue warn]: Error in created hook: "TypeError: handlers[i].call is not a function"

found in

---> <StageExecs>

测试
Vue.组件(“作业”{
分隔符:['[',']]'],
道具:[“工作”],
数据:函数(){
返回{
showExecs:false,
构建ID:[]
}
},
创建:{
stageExecs(){
url=“api/v2/exec?”+this.job.api\u url+“&limit=10”
获取(url)
.then(response=>response.json())
。然后(body=>{
对于(i=0;i{
log('Error Fetching:',url,err);
返回{'failure':url,'reason':err};
});
}
},
模板:`
  • [[item.url]]
`, }); var v_root=新的Vue({ 分隔符:['[',']]'], el:“#vue job”, 数据:{ job_exec:{{job_exec|safe}}, } });


我假设此处调用的顺序不正确,但vue.js是新的,因此不确定我做错了什么。

您的
数据组件应该是一个对象,而不是一个函数,您可以按如下方式替换它:

请同时检查文档:

问题是created()钩子需要是一个方法,而不是一个对象

created(){
url=“api/v2/exec?”+this.job.api\u url+“&limit=10”
获取(url)
.then(response=>response.json())
。然后(body=>{
对于(i=0;i{
log('Error Fetching:',url,err);
返回{'failure':url,'reason':err};
});
}              
},

第597行是什么?还有,StageExec中报告错误的代码是什么。第597行在vue.js库中-所以不知道这意味着什么?您也有自己的名为vue.js的文件?错误指向StageExec-那么这是什么?我还用正确的名称空间更新了代码(您现在可以看到StageExec)不,Vue实例对象的语法没有问题-只需要返回组件数据。@Trent数据中的关键字函数在这里没有意义,它应该是一个对象,而不是因为他设置了自定义分隔符,我猜他是在试图将Vue集成到现有的手柄(小胡子)中应用程序,因此该值被设置为超出范围。但它仍然是一个对象,并且仍然正常。错误是created()hook@Tren是的,你是对的,我们不能在创建的钩子中声明一个函数,所以它可以工作,但是引入了一个新的错误,我将为此创建一个新的帖子。创建的钩子中的错误:“TypeError:无法读取undefined的属性'api_url'”您在哪里定义了api_url?应该向组件上的“作业”属性传递一个包含名为api_url的属性的对象
<div id="vue-job">
    <div class="row">
        <h3>test</h3>
        <stage-execs></stage-execs>
    </div>
</div>

<script>
    Vue.component('jobs', {
        delimiters: [ '[[', ']]' ],
        props: ['job'],
        data: function() {
                return {
                    showExecs: false,
                    build_ids: []
                }
            },
        created: {
            stageExecs() {
                url = "api/v2/exec?" + this.job.api_url + "&limit=10"
                fetch(url)
                    .then(response => response.json())
                    .then(body => {
                        for(i=0; i<body.length; i++){
                            this.build_ids.push({
                                'id': JSON.stringify(body[i].build_id),
                            })
                        }
                    })
                    .catch( err => {
                        console.log('Error Fetching:', url, err);
                        return { 'failure': url, 'reason': err };
                    });
                }
        },
        template: `
        <ul id="example-1">
          <li v-for="item in build_ids">
            [[ item.url ]]
          </li>
        </ul>
        `,
    });


var v_root = new Vue({
    delimiters: [ '[[', ']]' ],
    el: '#vue-job',
    data: {
        job_exec: {{ job_exec|safe }},

    }
});
 data: {
     return {
         showExecs: false,
         build_ids: []
      }
created() {
    url = "api/v2/exec?" + this.job.api_url + "&limit=10"
    fetch(url)
        .then(response => response.json())
        .then(body => {
            for(i=0; i<body.length; i++){
                this.build_ids.push({
                    'id': JSON.stringify(body[i].build_id),
                })
            }
        })
        .catch( err => {
            console.log('Error Fetching:', url, err);
            return { 'failure': url, 'reason': err };
        });
    }              
},