2013-02-08 4 views
17

В настоящее время я начинаю учиться использовать Ember.js для разработки веб-приложений. В настоящее время есть что-то довольно основное, чего я еще не смог достичь. Ссылка на внешний URL-адрес, например www.google.com или что-то еще. Это то, что у меня есть:Как связать внешний URL с LinkTo с HandelBars

HTML

<body> 
    <script type="text/x-handlebars"> 
    <div> 
     Hello, <strong>{{firstName}} {{lastName}}</strong>! 
    </div> 

     {{#linkTo google}}Google{{/linkTo}} 

    </script> 
</body> 





$(document).ready(function() { 



//alert("HELLO WORLD"); 
window.App = Ember.Application.create(); 

App.ApplicationController = Ember.Controller.extend({ 
    firstName: "Trek", 
    lastName: "Glowacki", 
    googleURL: "www.google.com/ncr" 
}); 

App.Router.map(function() { 
    this.route("google", { 
     path: "www.google.com" 
    }); 

}); 

});

Когда ссылка делает это действительно работает, но он идет по этому адресу: E: /EMBERJS/index.html#/www.google.com

Любые намеки будут весьма благодарны. Не могу поверить, что я не понял этого сам по себе, но небольшая внешняя помощь не может повредить.

С уважением,

Ox

+1

Есть ли конкретная причина, по которой вам нужен шаблон 'linkTo'? Почему бы вам просто не использовать якорный тег в чистом HTML? – Deif

ответ

35

Вы не хотите, чтобы с помощью linkTo помощника для этого. Помощник linkTo используется для перехода в другие состояния вашего приложения Ember.JS, в то время как вы пытаетесь отодвинуть людей от своего приложения.

Есть два способа, которые можно использовать:

  1. Это будет связать ваш targetUrl на ваш якорь, но это не будет обновляться, если URL будет изменен.

    <a target="_blank" href="{{unbound view.targetUrl}}">Google</a>

  2. Следующий подход связывается с якоря, и он будет обновлять этот якорь, соответственно, если вы обновляете targetUrl свойство на объекте:

    <a target="_blank" {{bindAttr href="view.targetUrl"}}>Google</a>

Вот JSFiddle для вас: http://jsfiddle.net/zscff/

+1

Я обновил JSFiddle для вас, чтобы вы могли понять разницу, которую делает 'unbound': http: // jsfiddle.net/zscff/1/Мы заменяем свойство targetUrl через 2.5 секунды, вы увидите, что второй пример обновляется, как и ожидалось, но первый не работает. Они оба используют одно и то же свойство, но поскольку мы указали первое свойство как 'unbound', Ember не знает, как его обновить в DOM. – Wildhoney

+0

Я благодарен за это. – Oxnigarth

+1

bindAttr теперь устарел в пользу bind-attr –

0

Как уже было сказано, вы d не нужно использовать link-to помощник. Вам просто нужно использовать простой якорный тег <a> </a>.

У меня была такая же проблема. Чтобы исправить это, вам просто нужно быть осторожным с тегом привязки.
E.g. если вы наберете ссылку как этот <a href='www.example.com'> example </a> Эмбер будет генерировать следующую ссылку
Localhost: 4200/www.example.com

Но если добавить HTTP, чтобы HREF атрибута все в порядке.
<a href='http://www.example.com'> example </a>.
Выход www.example.com

Надеется, что это помогает.

Смежные вопросы