我们如何在脚本标记中正确使用聚合物属性?

时间:2016-05-22 16:58:28

标签: javascript node.js sockets socket.io polymer

使用基于socket.io的连接构建的Web组件,但我们希望用户能够从他们的服务器链接到他们自己的socket.io版本。使用以下脚本:

<script src$="{{socketIp}}/socket.io/socket.io.js"></script>

socketIp已定义,页面可以正常加载。一个例子是“http://localhost:8080

使用src=将提供404并在网址中打印出“{”。使用src$=似乎是正确的做事方式,因为它可以成功加载链接。

在附加时,我们会引用io,但会产生Uncaught ReferenceError: io is not defined

直接输入链接可以正常工作但是当用作变量时它不起作用。 我们尝试使用超时,以防它出现问题但尚未加载,但也无效。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

使用<script>绑定到on-load="METHOD"的加载事件,其中METHOD是Polymer对象上方法的名称。应该在该回调方法中定义socket.io

此示例将onScriptLoad()onScriptError()分别绑定到<script>的{​​{1}}和on-load的回调:

on-error

<dom-module id="x-foo">
  <template>
    <script src$="{{src}}"
            on-load="onScriptLoad"
            on-error="onScriptError"></script>
  </template>
  <script>
    Polymer({
      is: 'x-foo',
      onScriptLoad: function() {
        console.log('script loaded');
      },
      onScriptError: function(e) {
        console.log('script err:', e);
      }
    });
  </script>
</dom-module>

jsbin

答案 1 :(得分:0)

只需加载脚本:

use dixard\Product;
use dixard\Category;
use dixard\Gender;

class TshirtController extends Controller
{

       public function men_tshirt()
        { 
            $category = Category::where('name', '=', 't-shirt')->orderBy('id', 'desc')->first();
            $gender = Gender::where('gender', '=', 'woman')->orderBy('id', 'desc')->first();

            $products = $category->products();
            return view('store.shop.woman',compact('products'));

            // It filter only category and not gender woman

        }