我是vue.js中相当新的,我正在尝试做一个应用程序,您可以在其中找到书籍,但是我暂时坚持重用组件。
当我打开应用程序时,bookList组件用于显示最受欢迎的书籍。
我想要做的是:
从输入字段中搜索书籍,并用响应填充bookList组件,然后将其呈现在相同的视图中。 这是我的代码。任何建议,欢迎试图重用vue.js中的组件
<div id="app">
<nav id="menu">
<input type="text" v-model="newSearch" />
</nav>
<main id="panel">
<header>
<button class="toggle-button">☰</button>
<!-- <books :books="books" :url="url"></books> -->
<router-view></router-view>
</header>
</main>
</div> <!-- end app -->
<template id="book-list-template">
<ul>
<li v-for="book in books">
<div class="content">
<a v-link="{ name: 'book', params: { bookId: book.ID } }">
<img :src="book.thumbnail" class="center-block">
<p>{{book.title}}</p>
</a>
</div>
</li>
</ul>
</template>
<template id="single-book-template">
<div class="content" v-for="book in book">
<img :src="book.cover" class="center-block prueba">
<p>{{book.title}}</p>
</div>
</template>
url = 'api_url'
//defining some components
var bookList = Vue.extend({
template: '#book-list-template',
data: function() {
return {
books: [],
}
},
ready: function() {
this.getBooks();
},
methods: {
getBooks: function() {
this.$http.jsonp(url+'criteria=most_viewed').then(function(response) {
this.$set('books', response.data);
}, function(response) {
alert(response.status);
});
}
}
});
var singleBook = Vue.extend({
template: '#single-book-template',
data: function() {
return {
book: ''
}
},
ready: function() {
this.getBookById();
},
methods: {
getBookById: function() {
this.$http.jsonp(url+'id='+this.$route.params.bookId).then(function(response) {
this.$set('book', response.data);
}, function(response) {
alert(response.status);
});
}
}
});
//creating a vue instance
new Vue({
el: '#app',
data: {
newSearch: ''
}
}) //end vue
var App = Vue.extend({})
var router = new VueRouter()
router.map({
'/': {
component: bookList
},
'book/:bookId': {
name: 'book',
component: singleBook
}
})
router.start(App, '#app')
上使用Vue的filterBy我没有包含任何路由器信息becau我认为你在这里得到的大部分内容都将用一个组件来处理。如果您想要编写另一个包含书籍更深入信息的组件并将其映射到'/ book /:id',则可以使该组件中的每本书成为该URL的链接。 – Jeff
谢谢!那工作。 可以给我另一个提示吗? 我在我的应用程序中有一个侧边菜单,我的选项将会变成所有选项。我希望该菜单中的输入搜索不在书签列表模板内。 如何将输入搜索与bookList组件数据绑定? 我想在该组件中呈现来自我请求的响应。 我希望已经清楚。 非常感谢@Jeff –