1. <template>
    2. <view class= 'news'>
    3. <news-item @itemClick='goDetail' :list='newslist'></news-item>
    4. </view>
    5. </template>
    6. <script>
    7. import newsItem from '../../components/news-item/news-item'
    8. export default {
    9. data() {
    10. return {
    11. newslist:[]
    12. }
    13. },
    14. components:{
    15. "news-item":newsItem
    16. },
    17. methods: {
    18. async getNews (){
    19. const res = await this.$myRequest({
    20. url:'/api/getnewslist'
    21. })
    22. this.newslist = res.data.message
    23. console.log(this.newslist)
    24. },
    25. goDetail(id){
    26. uni.navigateTo({ //保留当前页面跳转到另外的页面
    27. url:'/pages/news-detail/news-detail?id='+id,
    28. })
    29. }
    30. },
    31. onLoad(){
    32. this.getNews()
    33. }
    34. }
    35. </script>
    36. <style lang='scss'>
    37. .news{
    38. }
    39. </style>

    news-item

    1. <template>
    2. <view>
    3. <view class='news_item' @click='navigator(item.id)' v-for='item in list' :key='item.id'>
    4. <image :src='item.img_url'></image>
    5. <view class='right'>
    6. <view class='tit'>
    7. {{item.title}}
    8. </view>
    9. <view class='info'>
    10. <text>发表时间:{{item.add_time | formatDate}}</text>
    11. <text>浏览:{{item.click}}</text>
    12. </view>
    13. </view>
    14. </view>
    15. </view>
    16. </template>
    17. <script>
    18. export default{
    19. props:['list'],
    20. filters:{ //定义了过滤器
    21. formatDate(date){
    22. const nDate = new Date(date)
    23. const year = nDate.getFullYear().toString().padStart(2,0)
    24. const month = nDate.getMonth().toString().padStart(2,0)
    25. const day = nDate.getDay().toString().padStart(2,0)
    26. return year+'-'+month+'-'+day
    27. }
    28. },
    29. methods:{
    30. navigator(id){
    31. this.$emit('itemClick',id) //发送
    32. }
    33. }
    34. }
    35. </script>
    36. <style lang='scss'>
    37. .news_item{
    38. display: flex;
    39. padding:10rpx 20rpx;
    40. border-bottom:1px solid $shop-color;
    41. image{
    42. min-width:200rpx;
    43. max-width: 200rpx;
    44. height:150rpx;
    45. border:1px dashed #007AFF;
    46. }
    47. .right{
    48. margin-left:15rpx;
    49. display: flex;
    50. flex-direction: column;
    51. justify-content: space-between;
    52. .tit{
    53. font-size: 33rpx;
    54. }
    55. .info{
    56. font-size: 25rpx;
    57. text:nth-child(2){
    58. margin-left:30rpx;
    59. }
    60. }
    61. }
    62. }
    63. </style>