如何访问各种元素中的对象值以显示事件数据?

问题描述 投票:0回答:1

我正在使用vue.js来构建一个事件管理应用程序。问题是我无法将列表组中每个事件的值呈现给DOM。它只是将花括号表达式呈现给DOM。

这是Js小提琴:

https://jsfiddle.net/ufy01L3q/2/

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>events Management</title>
</head>
<body>

 <!-- Latest compiled and minified CSS -->
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

 <!-- Optional theme -->
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">

 <script src="https://unpkg.com/vue"></script>

  <!-- navigation bar -->
  <nav class="navbar navbar-default">
    <div class="container-fluid">
      <a class="navbar-brand"><i class = ""></i>  events Management </a>
    </div>
  </nav>

  <!-- main body of our application -->
  <div class="container" id="events">

    <!-- add an event form -->
    <div class="col-sm-6">
      <div class="panel panel-default">
        <div class="panel-heading">
          <h3>Add an Event</h3>
        </div>
        <div class="panel-body">
         <div class="form-group">
           <input class="form-control" placeholder="Event Name" v-model="event.name">
         </div>

         <div class="form-group">
           <textarea class="form-control" placeholder="Event Description" v-model="event.description"></textarea>
         </div>

         <div class="form-group">
           <input type="date" class="form-control" placeholder="Date" v-model="event.date">
         </div>

         <button class="btn btn-primary" v-on="click: addEvent">Submit</button>
        </div>

      </div>
    </div>

    <!-- show the events -->
    <div class="col-sm-6">
      <div class="list-group">
       <a href="#" class="list-group-item" v-repeat="event in events">
           <h4 class="list-group-item-heading">
             <i class="glyphicon glyphicon-bullhorn"></i>
             {{ event.name }}
           </h4>

           <h5>
             <i class="glyphicon glyphicon-calendar" v-if="event.date"></i>
             {{ event.date }}
           </h5>

           <p class="list-group-item-text" v-if="event.description">{{ event.description }}</p>

           <button class="btn btn-xs btn-danger" v-on="click: deleteEvent($index)">Delete</button>
         </a>

      </div>
    </div>
  </div>




 // app.js

   <script>
    new Vue({

        // We want to target the div with an id of 'events'
        el: '#events',

        // Here we can register any values or collections that hold data
        // for the application
        data: {
            event: {
                name: '',
                description: '',
                date: ''
            },
            events: []
        },

        // Anything within the ready function will run when the application loads
        ready: function() {
            // When the application loads, we want to call the method that initializes
            // some data
            this.fetchEvents();
        },

        // Methods we want to use in our application are registered here
        methods: {
            // We dedicate a method to retrieving and setting some data
            fetchEvents: function() {
                var events = [{
                        id: 1,
                        name: 'TIFF',
                        description: 'Toronto International Film Festival',
                        date: '2015-09-10'
                    },
                    {
                        id: 2,
                        name: 'The Martian Premiere',
                        description: 'The Martian comes to theatres.',
                        date: '2015-10-02'
                    },
                    {
                        id: 3,
                        name: 'SXSW',
                        description: 'Music, film and interactive festival in Austin, TX.',
                        date: '2016-03-11'
                    }
                ];
                // $set is a convenience method provided by Vue that is similar to pushing
                // data onto an array
                this.$set('events', events);
            },

            // Adds an event to the existing events array
            addEvent: function() {
                if (this.event.name) {
                    this.events.push(this.event);
                    this.event = {
                        name: '',
                        description: '',
                        date: ''
                    },
                }
            }
        }
    });
     </script>
 </body>
</html>
  <!-- JS -->

提前感谢您的帮助。

javascript twitter-bootstrap vue.js
1个回答
0
投票

第一:你没有正确地包括Vue。将它包含在<head>中,并且在jsfiddle中只包含一个脚本URL,没有标签。

第二:你的事件绑定语法是错误的:你正在尝试v-on="click: addEvent",但正确的语法是v-on:click="addEvent($event)" - 在这个例子中你也将$event传递给你的方法,你提取一个像这样的值:$event.target.value

© www.soinside.com 2019 - 2024. All rights reserved.