javascript – Vue实例中的Vue实例

前端之家收集整理的这篇文章主要介绍了javascript – Vue实例中的Vue实例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
苏人!

我在这里得到了这个HTML代码

// index.html
<div data-init="component-one">
  <...>

 <div data-init="component-two">
   <button @click="doSomething($event)">
 </div>
</div>

如果我正确理解了一切,这基本上引用了另一个Vue实例中的Vue实例.相应的JS代码分为两个文件,如下所示:

// componentOne.js
new Vue(
  el: '[data-init="component-one"]',data: {...},methods: {...}
);


// componentTwo.js
new Vue(
  el: '[data-init="component-two"]'
  data: {...}
  methods: {
    doSomething: function(event) {...}
  }
);

现在,问题是,来自componentTwo的doSomething永远不会被调用.

但是当我做一些内联的东西,比如{{3 3}}时,它会像它应该的那样计算.所以Vue知道有什么东西.它还会在页面加载时删除@click元素.

我也尝试使用内联模板,但它并没有像我期望的那样在这种情况下工作.而且我认为它不适用于这种情况,所以我再次放弃了它.

这里的正确方法是什么?我怎样才能使这项工作成为现在最简单的方法

我们使用的Vue版本是2.1.8.

干杯!

解决方法

问题是你有两个相互嵌套的vue实例.
如果元素是嵌套的,那么您应该使用相同的实例或尝试组件

https://jsfiddle.net/p16y2g16/1/

// componentTwo.js
var item = Vue.component('item',({
name:'item',template:'<button @click="doSomething($event)">{{ message2 }}        </button>',data: function(){
   return{ 
  message2: 'ddddddddddd!'
}},methods: {
doSomething: function(event) {alert('s')}
}
 }));
  var app = new Vue({
    el: '[data-init="component-one"]',data: {
 message: 'Hello Vue!'
    }
   });

   <div data-init="component-one">
  <button >{{ message }}</button>

    <item></item>

    </div>

如果sepatate实例彼此独立,则它们可以正常工作.

如下:

https://jsfiddle.net/p16y2g16/

var app = new Vue({
 el: '[data-init="component-one"]',data: {
  message: 'Hello Vue!'
  }
});


 // componentTwo.js
 var ddd = new Vue({
  el: '[data-init="component-two"]',data: {
     message: 'ddddddddddd!'
},methods: {
   doSomething: function(event) {alert('s')}
 } 
});

猜你在找的JavaScript相关文章