Ember js #LinkTo tag и его поведение - PullRequest
1 голос
/ 25 апреля 2019

У меня есть проблема, когда при нажатии на ссылку со своей страницы (LinkTo) Ctrl + нажатие открывается новая вкладка, но элементы управления переходят на следующую вкладку в Chrome, тогда как вIE элемент управления остается на той же странице.Я выяснил, что #linkTo поведение в хроме другое.Кто-нибудь может помочь?

попытался заменить якорный тег, но маршруты не работают одним щелчком мыши

{{#linkTo "routename" "id"}}..{{/linkTo}}

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Мне понадобилось немного времени, чтобы понять, о чем ты спрашиваешь, но я думаю, что понял это ?

Во-первых, я хотел бы отметить, что это поведение не имеет никакого отношения к EmberJS и является 100% поведением браузера. Вы увидите это поведение с любой ссылкой (независимо от того, использует ли она JavaScript), но я объясню подробнее об этом ниже.

Поэтому, когда я попытался воссоздать ваше поведение в Chrome, я не увидел, что когда я использовал ctrl + щелчок , чтобы открыть новую вкладку, он не переключился на это вкладка автоматически. При разговоре с одним из моих коллег об этом кажется, что в Chrome есть настройка, где вы можете изменить это поведение, так что, возможно, вы уже изменили эту настройку? Более подробное обсуждение этой темы и связанных с ней проблем можно найти на веб-сайте поддержки Chrome .

Итак, я упомянул, что это не специфическая проблема Ember, вы столкнетесь с этим на любой веб-странице, даже если они не используют JavaScript. Интересно, что Ember позволяет вам в первую очередь открывать новую вкладку, так как он сильно фокусируется на URL ? Если вы осмотрите страницу в своем приложении Ember, вы увидите, что на самом деле он вставляет действительный элемент <a href="/something">Your link here</a>. в DOM это означает, что вы получите хорошее поведение при ctrl + щелчке вместо простого открытия новой вкладки с домашней страницей вашего приложения.


На этот вопрос был дан ответ в рамках 2-го сезона 1-го сезона «Могу я задать вопрос». Если вы хотите, чтобы мы обсудили этот ответ полностью, вы можете посмотреть видео здесь: https://youtu.be/v1rBL5_KPqU

0 голосов
/ 12 мая 2019

Я думаю, вам лучше перенести это поведение маршрутизации в соответствующий JS-файл, чем использовать linkTo helper.Тогда вы сможете лучше контролировать свои действия и сможете делать разные вещи в зависимости от загрузки браузера.

Ниже приведены шаги высокого уровня для достижения этого.

  1. Добавьте помощник "action" вместо помощника "linkTo", как показано ниже.

<div {{action 'routeToPage'}}></div>
В файле JS запишите это действие и выполните маршрутизацию после проверки браузером.

actions: {
    routeToPage: function () {
        var route = this.container.lookup('route:application');
        
        if(navigator.userAgent.indexOf("Chrome") !== -1 ) {
        // Loaded inside Chrome Browser
          route.render(routeString, <your params>);
        }
    }
}

Я не буду объяснять, как route.render работает в EmberJ здесь.Если вам нужно, я могу помочь с этим.И вы можете проверить другие браузеры с помощью navigator.userAgent зависит от ваших требований.

...