2013-02-08 72 views
17

我目前開始學習如何使用Ember.js進行Web應用程序開發。目前有一些非常基本的東西,我還沒有實現。鏈接到www.google.com等外部網址。這是我有:如何使用LinkTo與HandelBars鏈接到外部URL

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

任何提示將不勝感激。我不能相信我自己沒有想到這一點,但有一點外部幫助不會傷害。

問候,

牛年

+1

爲什麼需要'linkTo'模板有特定的原因嗎?爲什麼不在純HTML中使用錨標籤? – Deif 2013-02-08 17:02:49

回答

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 for you:http://jsfiddle.net/zscff/

+1

我已經爲你更新了JSFiddle,所以你可以理解'unbound'的差異:http:// jsfiddle。net/zscff/1 /我們在2.5秒後改變'targetUrl'屬性,你會發現第二個例子按預期更新,但第一個例子不是。他們都使用相同的屬性,但因爲我們已經指定了第一個屬性爲'unbound',Ember不知道如何在DOM中更新它。 – Wildhoney 2013-02-08 17:43:52

+0

我很感激,謝謝讓我看看它。 – Oxnigarth 2013-02-08 20:24:07

+1

bindAttr現在已被棄用,以支持bind-attr – 2015-01-28 22:38:11

0

正如你所說,你d不需要使用鏈接至幫手。 你只需要使用簡單的錨點標籤<a> </a>

我剛剛有同樣的問題。爲了解決這個問題,你只需要小心錨標記。
E.g.如果你喜歡這個 <a href='www.example.com'> example </a>鍵入鏈接,灰燼會生成以下鏈接
本地主機:4200/www.example.com

但是如果你添加HTTP,到href屬性一切正常。
<a href='http://www.example.com'> example </a>
輸出是www.example.com

希望它有幫助。