【问题标题】:Polymer, how to get url params in page.js into polymer element?聚合物,如何将 page.js 中的 url 参数转换为聚合物元素?
【发布时间】:2015-07-13 22:03:10
【问题描述】:

我想做一个单页应用程序。当我转到localhost/person-info/101 之类的路径时,如何使用 page.js 将 URL 参数获取到 Polymer 元素中?

在使用neon-animated-page 更改页面之前,我必须使用这些参数来选择或更改person-info 元素中的数据

app.js的内容:

window.addEventListener('WebComponentsReady', function () {
    var app = document.querySelector('#app');
    page('/', home);
    page('/person-info/:user', showPersonInfo);

    page({
        hashbang: true
    });

    function home() {
        app.route = 'index';

        console.log("app route" + app.route);
        console.log("home");
    }

    function showPersonInfo(data) {
        console.log(data);
        console.log(data.params.user);

        app.params = data.params;

        app.route = 'person-info';
    }
});

还有我的 Polymer 元素 person-info.html

<link rel="import" href="bower_components/iron-list/iron-list.html">
<link rel="import" href="bower_components/polymer/polymer.html">
<link rel="import" href="bower_components/paper-toolbar/paper-toolbar.html">
<link rel="import" href="bower_components/paper-icon-button/paper-icon-button.html">

<script type="text/javascript" src="bower_components/jquery-2.1.4.min/index.js"></script>
<script src="js/app.js"></script>

<dom-module id="person-info">
    <style>
        :host {
            display: block;
            font-family: sans-serif;
            @apply(--layout-fit);
            @apply(--layout-vertical);
        }

        .toolbar {
            background: #3f78e3;   
        }

        a {
            color:#FFF;
        }
    </style>
    <template id="person-info">
        <paper-toolbar class="toolbar">
            <a href="/">
                <paper-icon-button icon="icons:arrow-back"></paper-icon-button>
            </a>

            <div>test</div>
            <div>test</div>
        </paper-toolbar>
        <content></content>
    </template>
    <script>
        Polymer({
            is: 'person-info',
            ready: function () {
                console.log("person-info page");
                this.testdd = "adisak";
                console.log("user ---->"+this.params);
                console.log(this);
            },
            properties: {
                dataindex: String
            }
        });
    </script>
</dom-module>

【问题讨论】:

    标签: polymer polymer-1.0 polymer-starter-kit


    【解决方案1】:

    变量app 是全局变量,因此如果您从路由将数据绑定到app.params,那么您可以使用app.params 在任何地方访问它。或者只是访问您的元素并在您的元素上设置属性,如下所示

    function showPersonInfo(data){
        var personInfo=document.querySelector('person-info');
        personInfo.user=data.params;
        app.route = 'person-info';
    }
    

    您可以使用this.user 访问您的person-info 元素,但我认为您需要在元素属性上设置属性user

    【讨论】:

    • 它工作!谢谢你。但我只想知道,这是动态更改数据的正确方法吗?或者它有比这更好的其他方式
    • 对我来说是的,这是动态数据的一种简单方法。但是你可以绑定到数据模型,所以如果数据模型发生变化,它也会自动更新你的内容。
    • 对不起先生,什么是数据模型?可以举个例子吗,谢谢。
    • 哦,好吧,你是编程新手吗?这是一种用于对数据建模的模式。主要在框架内使用,如backbonejs.org/#Model
    • 你的意思是MVC框架是对的,你能推荐一些与聚合物一起使用的mvc框架。我觉得 page.js 还不够
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2014-08-24
    相关资源
    最近更新 更多