Приложение Predix UI Seed - удалить хэш из URL

Я использую начальное значение пользовательского интерфейса Predix и пытаюсь удалить # из URL, чтобы

http://localhost:5000/#/dash

становится

http://localhost:5000/dash

Как лучше всего это сделать?

seed-app.html, на которой, как я думал, можно настроить структуру URL, есть следующие ключевые элементы:

...
<!-- app route -->
<link rel="import" href="../../bower_components/app-route/app-location.html">
<link rel="import" href="../../bower_components/app-route/app-route.html">
...
<!-- px components -->
<link rel="import" href="../../bower_components/px-app-nav/px-app-nav.html">
<link rel="import" href="../../bower_components/px-view/px-view.html">

<!-- app-location captures url and assigns _route value -->
          <app-location
            id="carbonLocation"
            route="{{_route}}"
            use-hash-as-path>
          </app-location>

          <!-- /dashboards route and view -->
          <app-route
            route="[[_route]]"
            pattern="/dashboards"
            active="{{_dashboardsActive}}">
          </app-route>
...
 <script>
    Polymer({
      is: 'seed-app',
      properties: {
        routesActive: {
          type: Boolean,
          value: false
        },
...
 // Sets app default base URL for client-side routing
        pathPrefix: {
          type: String,
          value: '#'
        }
      },
      ready: function(){
        this._checkForDefaultRoute();
      },
      _checkForDefaultRoute: function() {
        // set default route to /dashboards
        var l = window.location;
        if((l.hash === "#/" || l.hash === "") && l.pathname === "/") {
          l.hash = "/dashboards";
        }
      }
    });
  </script>

Я удалил pathPrefix

pathPrefix: {
   type: String,
   value: ''
}

и изменил функцию _checkForDefaultRoute следующим образом

_checkForDefaultRoute: function() {
    // set default route to /runtime
    var l = window.location;
    if((l.hash==="") && l.pathname==="/"){
      l.pathname="/login";
    }
  }

В результате мне все еще нужно использовать # в качестве префикса для доступа к страницам.


person Ahadu Tsegaye Abebe    schedule 13.02.2017    source источник
comment
Но почему вы хотите удалить хэш из URL-адреса?   -  person Pooja Kedar    schedule 13.02.2017
comment
Потому что для меня это ничего не значит, я хочу иметь чистый путь. Есть ли веская причина держать его там?   -  person Ahadu Tsegaye Abebe    schedule 13.02.2017


Ответы (2)


См. ответ на этот вопрос на форуме Predix:

https://forum.predix.io/questions/18308/predix-ui-seed-app-remove-hash-from-url.html#answer-18365

person geddevrel    schedule 13.02.2017
comment
Это я разместил вопрос на форуме Predix ;) - person Ahadu Tsegaye Abebe; 14.02.2017

Новая версия примера приложения predix не использует хэш #. Пожалуйста, посетите

https://github.com/predixdesignsystem/px-sample-app

Вообще говоря, новая версия приложения px использует dom-if для

 <template is="dom-if" if="{{isEqual(selected,'dashboard')}}" restamp>
   <px-sample-dashboard></px-sample-dashboard>
</template>

куда

  selected: {
        type: Array,
        value: function() {
          return ["dashboard"];
        }
      },

затем вы можете использовать px-app-nav для выбора страниц

  <px-app-nav slot="app-nav" selected-route="{{selected}}"
    items='[{"label": "Dashboard","path": "dashboard","icon": "px-fea:dashboard", "id": "dashboard"}]'>
  </px-app-nav>
person venergiac    schedule 29.01.2019