使用vue尝试使用v-model、v-if与v-for的知识,制作一个简易贴吧。有普通用户和管理员两种角色,普通用户可以发帖、收藏帖子;管理员可以发帖、置顶帖子。请问该怎么用代码实现。请给出代码
时间: 2023-06-07 12:10:40 浏览: 77
好的,根据您的要求,以下是一个简单的使用vue、v-model、v-if和v-for实现的贴吧页面,包含普通用户和管理员两种角色。
HTML代码:
```html
<div id="app">
<h1>欢迎来到贴吧</h1>
<!-- 登录表单 -->
<form v-if="!user">
<label>用户名:</label>
<input v-model="username">
<br>
<label>密码:</label>
<input type="password" v-model="password">
<br>
<button type="submit" @click.prevent="login">登录</button>
</form>
<!-- 普通用户界面 -->
<div v-if="user && user.role === 'user'">
<h2>发帖</h2>
<form>
<label>标题:</label>
<input v-model="post.title">
<br>
<label>内容:</label>
<textarea v-model="post.content"></textarea>
<br>
<button type="submit" @click.prevent="addPost">提交</button>
</form>
<h2>帖子列表</h2>
<ul>
<li v-for="post in posts">
<h3>{{ post.title }}</h3>
<p>{{ post.content }}</p>
<button @click.prevent="toggleFavorite(post)">{{ post.isFavorite ? '取消收藏' : '收藏' }}</button>
</li>
</ul>
</div>
<!-- 管理员界面 -->
<div v-if="user && user.role === 'admin'">
<h2>发帖并置顶</h2>
<form>
<label>标题:</label>
<input v-model="post.title">
<br>
<label>内容:</label>
<textarea v-model="post.content"></textarea>
<br>
<button type="submit" @click.prevent="addPostAndTop">提交并置顶</button>
</form>
<h2>帖子列表</h2>
<ul>
<li v-for="post in posts">
<h3>{{ post.title }} <span v-if="post.isTop">(置顶)</span></h3>
<p>{{ post.content }}</p>
<button @click.prevent="toggleFavorite(post)">{{ post.isFavorite ? '取消收藏' : '收藏' }}</button>
<button v-if="!post.isTop" @click.prevent="setTop(post)">置顶</button>
<button v-if="post.isTop" @click.prevent="cancelTop(post)">取消置顶</button>
</li>
</ul>
</div>
</div>
```
JavaScript代码:
```javascript
new Vue({
el: '#app',
data: {
username: '',
password: '',
user: null,
post: { title: '', content: '' },
posts: [
{ title: '帖子1', content: '内容1', isFavorite: false, isTop: false },
{ title: '帖子2', content: '内容2', isFavorite: false, isTop: false },
{ title: '帖子3', content: '内容3', isFavorite: false, isTop: false }
]
},
methods: {
// 登录
login() {
if (this.username === 'user' && this.password === 'user') {
this.user = { username: 'user', role: 'user' }
} else if (this.username === 'admin' && this.password === 'admin') {
this.user = { username: 'admin', role: 'admin' }
} else {
alert('用户名或密码错误!')
}
},
// 添加帖子
addPost() {
if (this.post.title && this.post.content) {
this.posts.push(Object.assign({}, this.post, { isFavorite: false, isTop: false }))
this.post.title = ''
this.post.content = ''
}
},
// 添加帖子并置顶
addPostAndTop() {
if (this.post.title && this.post.content) {
this.posts.push(Object.assign({}, this.post, { isFavorite: false, isTop: true }))
this.post.title = ''
this.post.content = ''
}
},
// 切换收藏状态
toggleFavorite(post) {
post.isFavorite = !post.isFavorite
},
// 置顶
setTop(post) {
post.isTop = true
},
// 取消置顶
cancelTop(post) {
post.isTop = false
}
}
})
```
这个贴吧页面可以根据用户的角色不同,提供不同的功能。
普通用户能够:
- 登录
- 新建帖子
- 查看帖子列表
- 收藏帖子
管理员除了可以做普通用户能做的事情外,还能够:
- 发帖并置顶帖子
- 置顶和取消置顶帖子
当然,这只是一个非常简单的示例,如果要实现更复杂的功能还需要更多的代码和考虑更多的情况。