javascript - Vue.js为什么不支持 回调函数“函数式编程”?
巴扎黑
巴扎黑 2017-04-11 12:31:38
[JavaScript讨论组]

子组件向父组件传值,为了增加回调函数的复用性,事件绑定采用函数式编程,但是总是不能正确调用实例方法返回的函数:

  
    data () {
    message: {
        prodMoneyOff: ''
    }
    },
    methods: {
         receiveData (item) {
          let _self = this
          console.log(`选择的item是${item}`)
          return function (val) {
            console.log(`传递的值是 ${val}`)
            _self.message[item] = val
          }
        }
    }
  
巴扎黑
巴扎黑

全部回复(2)
ringa_lee

Vue 2 对模板是先编译成 render function 再进行渲染的,当你这样写的时候,Vue 编译器会认为你写的是一个内联语句,因此会按内联语句的方式进行编译,因此返回函数的函数调用在这里无效。

Vue 1 估计也不行,因为,同样也会认为是内联语句。

解决方法,既然 Vue 将绑定的事件作为内联语句处理了,那么可以使用内联语句 receiveData(prodMoneyOff)($event) 来达到想要的结果。

若需要处理多个参数,需要注意在子组件中 $emit 事件时传递一个包含多个属性的对象

阿神

具体代码没看到,但如果你是这样注册的:

 Vue.component("slideDown", {
    template:"<p>son</p>"
})

那么在html里面,最好是这样的:

 <slide-down></slide-down>
 #或者
 <slidedown></slidedown>

因为浏览器DOM解析上,会把大写自动转小写。谷歌起码是这样。

如果html里是 <slideDown></slideDown>这样调用,谷歌报这样的错(亲测):

[Vue warn]: Unknown custom element: <slidedown> - did you register the component         correctly? For recursive components, make sure to provide the "name" option. (found in root instance)

补充,Vue是支持回调函数是一个闭包的。没有看到你浏览器报的错误,所以不好下什么结论。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号