显示Facebook API计数的自定义组件
Custom components showing counts from Facebook API
因此,我想使用Vue.js创建自定义组件来获取社交计数。
自定义组件标签为:
<fb-share src="http://google.com"></fb-share>
其中属性CCD_ 1将是将被计数的链接的url。该组件的输出为:
<span>265614</span>
这是的代码
var FBShare = Vue.extend({
props: ['src'],
computed: {
count: function() {
return $.getJSON('https://api.facebook.com/method/links.getStats?urls=' + this.src + '&format=json').done(function(data) {
console.log(data[0].click_count);
return data[0].click_count;
});
}
},
template: '<span>{{ src }} - {{ count }}</span>'
});
Vue.component('fb-share', FBShare);
new Vue({
el: '#app'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.12.16/vue.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<div id="app">
<fb-share src="http://google.com"></fb-share>
</div>
所以,问题是它总是显示[Object-Object]。
谢谢
问题在于返回计数的方式:
count: function() {
// This first return is what is actually returned and that is
// a jQuery object
return $.getJSON('https://api.facebook.com/method/links.getStats?urls=' + this.src + '&format=json').done(function(data) {
console.log(data[0].click_count);
// This return does not get returned
// like you think it gets returned
return data[0].click_count;
});
}
以下是解决您遇到的问题的一种方法:
var FBShare = Vue.extend({
props: ['src'],
data: function() { return { count: '' } },
ready: function() {
this.loadCount();
},
methods: {
loadCount: function() {
var _this = this;
$.getJSON('https://api.facebook.com/method/links.getStats?urls=' + this.src + '&format=json').done(function(data) {
console.log(data[0].click_count);
_this.count = data[0].click_count;
});
}
},
template: '<span>{{ src }} - {{ count }}</span>'
});
Vue.component('fb-share', FBShare);
new Vue({
el: '#app'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.12.16/vue.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<div id="app">
<fb-share src="http://google.com"></fb-share>
</div>
没关系,我找到了答案。
我添加vue资源并从中修改代码。
给你。
var FBShare = Vue.extend({
props: ['src'],
data: function(){
return { props: {} };
},
ready: function(){
this.$http.get('https://api.facebook.com/method/links.getStats?urls=' + this.src + '&format=json', function(data){
this.props = data;
});
},
template: '<span>{{ src }} - {{ props[0].share_count }}</span>'
});
Vue.component('fb-share', FBShare);
new Vue({
el: '#app'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/0.12.16/vue.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/0.1.16/vue-resource.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<div id="app">
<fb-share src="http://google.com"></fb-share>
<fb-share src="http://kawaiibeautyjapan.com"></fb-share>
</div>
相关文章:
- 对自定义组件中的本地访问引用进行反应
- 点击tpl链接时,ExtJS 4.2自定义组件触发事件
- Extjs 4,事件处理,范围,自定义组件
- Gwd自定义组件及其事件处理程序
- 从自定义组件内部查找 Ember
- 在 ionic 2 中缓存自定义组件内容
- 挖空绑定自定义组件,使其不与中心视图模型冲突
- 使用 Aurelia在视图中动态生成自定义组件
- Ember.js自定义组件或视图
- Vue.js 使用 Vuex 和自定义组件,@click方法输出未定义
- 如何侦听 RactiveJS 自定义组件
- VideoJS v5 - 在 ES6 中添加自定义组件 - 我做得对吗?
- 如何将自定义组件与反应路由器路由转换一起使用
- React-Native:ScrollView,refs和自定义组件
- extjs4 - 将自定义组件添加到容器
- JSF 自定义组件在与 Oracle ADF 一起使用时缺少自动生成的 JavaScript
- 嵌入 API 自定义组件:未捕获类型错误:无法读取未定义的属性“ViewSelector2”
- KnockoutJS:访问自定义组件之外的可观察变量
- 控制铁页的聚合物自定义组件
- Sencha touch 2-自定义组件开发数据项未从存储加载值