【问题标题】:How to return javascript code result to the polymer custom element's <template>?如何将 javascript 代码结果返回到聚合物自定义元素的 <template>?
【发布时间】:2017-02-13 01:49:11
【问题描述】:

已解决

我接受了@akc42 在下面发布的答案,并在getViews 函数定义之前添加了var self = this;,并将代码中的this 更改为self(并将self 添加到ytr 中,就像@987654327 @也是)

/已解决

我正在尝试从我的 youtube 频道获取观看次数。我要做的就是将计算结果返回给&lt;p id="views"&gt;&lt;/p&gt;&lt;p id="youtubeRequest"&gt;&lt;/p&gt;

我有这个代码:

<template>
   ...   
  <div>                      
      <p id="views" style="display:inline; ">100/Amount of views:</p>
      <p id="youtubeRequest" style="display:inline">Amount of views:</p>
  </div>
  ... 
</template>

 <script>
   Polymer({
     is: 'my-view1',

     ready: function()
     {
       function getViews(params) {
         $.ajax({
           url: "https://www.googleapis.com/youtube/v3/channels?part=statistics&key=MyAPIkeyHere",
           jsonp: "callback",
           dataType: "jsonp",
           success: function(response) {
             this.ytr = this.$.youtubeRequest.innerHTML = response.items[0].statistics.viewCount;
             var ytr2 = this.$.views.innerHTML = 100 / ytr;
             this.ytr3 = ytr2.toPrecision(1);
             },
         });
       }
       getViews()
    }
 </script>
</dom-module>

我使用 this.$.id 而不是 document.getElementById("youtubeRequest"),因为它仅用于访问 Polymer 元素之外的项目。

我需要将计算值绑定到对应的&lt;p&gt;标签

【问题讨论】:

  • response.items 必须返回 undefined
  • 但这意味着什么?我是网络开发的新手,我不知道如何处理它
  • 响应是什么,console.log 什么的
  • 表示不存在
  • @Un1 如果你试图获取一个不存在的值,你会得到undefined。就是这样。

标签: javascript polymer polymer-1.0 shadow-dom custom-element


【解决方案1】:

您上面的代码显示了结束&lt;/dom-module&gt;,但不是开始。您是否尝试定义 Polymer 元素。

如果是这样,您只需使用数据绑定。您也可以使用 ajax 调用,但先让另一部分工作。像这样的

<dom-module id="my-view1">
<template>
   ...  

  <div>                      
      <p id="views" style="display:inline; ">Amount of views: [[ytr]]</p>
      <p id="youtubeRequest" style="display:inline">[[ytr3]]</p>
  </div>
  ... 
</template>

 <script>
   Polymer({
     is: 'my-view1',
    properties: {
        ytr: {
            type: Number,
            value: 0
        },
        ytr3: {
            type: Number,
            value: 0
        }
    },
     ready: function()
     {
       function getViews(params) {
         $.ajax({
           url: "https://www.googleapis.com/youtube/v3/channels?part=statistics&key=MyAPIkeyHere",
           jsonp: "callback",
           dataType: "jsonp",
           success: function(response) {
             this. ytr = this.$.youtubeRequest.innerHTML = response.items[0].statistics.viewCount;
             var ytr2 = this.$.views.innerHTML = 100 / ytr;
             this.ytr3 = ytr2.toPrecision(1);
             },
         });
       }
       getViews()
    }
 </script>
</dom-module>

【讨论】:

  • ytr3 应该已经是 ytr/100。我的示例中有一个错字,在这之间有一个空格。和 ytr3,只需将其删除。
  • 谢谢它解决了这个问题!只需添加self var 即可
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
相关资源
最近更新 更多