vue.js - 未在实例上定义,但在呈现期间引用

Dav*_* J. 11 javascript vue.js

我正在加载一个模板,该模板使用我的代码引用客户端js文件,如下所示:

<!DOCTYPE html>
<html>
<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.1/vue.js"></script>
  <link rel="stylesheet" type="text/css" href="../css/app.css">

</head>
<body>
<div id="container">
  <div id="map">
    <script src="../js/app.js" type="text/javascript"></script>    
  <div id="offer-details">
    <form id="offer-form" v-on:submit="makeOffer(tags, description, code)">  
      <input id="description"/>
      <input id="tags"/>
      <input id="code"/>
      <input type="submit"/>
    </form>
  </div>
  </div>
</div>

</body>

</html>    
Run Code Online (Sandbox Code Playgroud)

我的浏览器显示以下(details.js)成功加载.

var vm = new Vue({
    el: "#details",
    data: {
    offer: {
            publickey: '',
            privatekey: '',          
            name: '',
            service: '',
            value: '',
            currency: '',
            tags: '',
            description: '',
            code: ''
    },             
    methods: {
        makeOffer: function makeOffer(){console.log(vm.publickey)}

    }
    }   
})
Run Code Online (Sandbox Code Playgroud)

但是,当我提交表单时,我收到以下错误消息:

[Vue warn]: Property or method "makeOffer" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in root instance)vue.js:2574:7

[Vue warn]: Handler for event "submit" is undefined. 
Run Code Online (Sandbox Code Playgroud)

在我看来,就像我应该在方法键中定义makeOffer一样.这与在实例上定义它不一样吗?为什么不看到makeOffer?

Mah*_*dam 12

您希望确保makeOffer在methods选项中(它本身在数据选项之外).现在,您在data选项中有了methods选项.此外,您无法登录publickey使用vm.publickey; 相反,你应该使用this.offer.publickey.