聚合物应用未将路由参数传递给组件



我正在尝试使用 pagejs 访问聚合物应用程序中的 url 参数,但我无法找出为什么该值在组件内部仍然无法访问。

这是我对路由.html文件所做的

page('/crews/edit/:crewId', function(data) {
        app.params = data.params;      
        app.route = 'crew-edit';
        setFocus(app.route);
    });

然后我尝试将其传递到页面组件中

<section data-route="crew-edit" tabindex="-1">
        <bw-crew-edit crewId="{{ app.params.crewId }}"></bw-crew-edit>
</section>

然后最后进入组件本身

<dom-module is="bw-crew-edit">
  <template>
      {{crewId}}    
  </template>
  <script>
    (function() {
        "use strict";
        Polymer({
            is: 'bw-crew-edit',
            properties: {              
              crewId: {
                type: String,
                notify: true,
                observers: '_crewIdChanged'
              }
            },
            _crewIdChanged: function() {
              console.log(this.crewId);
            },
        });
    })();
  </script>
</dom-module>

我确信我已经遵循了事情的顺序,并且无法弄清楚为什么组件没有接收数据。

如 Polymer 文档中所示:

属性名称

到属性名称的映射

将属性名称

映射到属性名称时:

    属性名称
  • 将转换为小写属性名称。例如,属性firstName映射到firstname

  • 带短划线
  • 的属性名称将转换为驼峰属性名称,方法是将每个短划线后面的字符大写,然后删除短划线。例如,属性first-name映射到firstName

在您的情况下,您可以使用 crew-id 属性来设置元素的 crewId 属性:

<bw-crew-edit crew-id="foo">

<head>
  <base href="https://polygit.org/polymer+1.4.0/components/">
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link rel="import" href="polymer/polymer.html">
</head>
<body>
  <bw-crew-edit crew-id="foo"></bw-crew-edit>
  <dom-module id="bw-crew-edit">
    <template>
      <span>crewId: {{crewId}}</span>
    </template>
    <script>
      HTMLImports.whenReady(function() {
        Polymer({
          is: 'bw-crew-edit',
          properties : {
            crewId: String
          },
          ready: function() {
            console.log('crewId', this.crewId);
          }
        });
      });
    </script>
  </dom-module>
</body>

代码笔

最新更新