ошибка:
vue.js:597 [Vue warn]: Error in created hook: "TypeError: handlers[i].call is not a function"
found in
---> <StageExecs>
vue.js
<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.info('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 }},
}
});
Я предполагаю, что здесь что-то вызывается в неправильном порядке, но новичок в vue.js, поэтому не уверен, что я сделал неправильно.
строка 597 находится в самой библиотеке vue.js - так что понятия не имею, что это значит
Итак, у вас есть собственный файл с именем vue.js?
Ошибка указывает на StageExec - так что же в этом?
также я обновил свой код с правильным пространством имен (теперь вы можете увидеть StageExecs)
ваш компонент data
должен быть объектом, а не функцией, вы заменяете его, как показано ниже:
пожалуйста, проверьте документ: Декларативный рендеринг
data: {
return {
showExecs: false,
build_ids: []
}
Нет, этот синтаксис подходит для объекта Vue Instance — нужно возвращать только данные компонента. vuejs.org/v2/guide/instance.html
@Trent функция ключевого слова в данных не имеет смысла, вместо этого это должен быть объект
Учитывая, что он установил пользовательские разделители, я предполагаю, что он пытается интегрировать vue в существующее приложение для рулей (усов), поэтому это значение устанавливается вне области действия. Но это все еще объект, и все в порядке. Ошибка была в хуке created()
@Tren да, ты прав, мы не можем объявить функцию в созданном хуке
Проблема создана() хук должен быть методом, а не объектом. См. это исправление рабочей песочницы https://codesandbox.io/s/vue-template-e0dzj.
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.info('Error Fetching:', url, err);
return { 'failure': url, 'reason': err };
});
}
},
Так что это работает, но вводит новую ошибку, я собираюсь создать для этого новый пост.
Ошибка в созданном хуке: «Ошибка типа: невозможно прочитать свойство «api_url» неопределенного»
Где вы определили api_url? Свойство «job» в компоненте должно передавать объект, который содержит свойство с именем api_url.
что на линии 597? Кроме того, какой код в StageExecs сообщает об ошибке.