2015-04-19 82 views
1

我已經創建了一個HTML5應用程序,它使用knockoutjs來調用一個寧靜的服務並獲取/發佈JSON消息。 這是我第一個使用HTML5的應用程序,所以我不確定如何實現URL重定向。HTML5,淘汰賽URL重定向功能

在應用程序中,我有兩個html頁面,一個是DataGrid頁面,顯示通過執行get rest調用接收到的所有數據。我添加了一個超鏈接到顯示器中的一個字段,我希望用它來重定向到詳細信息頁面,並讓其餘的調用來獲取該特定ID的數據並在稍後將其顯示在可編輯頁面中以便保存更改。

UserGridPage.html

<tbody data-bind="foreach:userList"> 
<tr> 
<td><a data-bind="attr:{href: userInfoUrl()}, text:userInfoId"></a></td> 
<td data-bind="text: UserName" ></td> 
</tr> 

UserGridPage.js

MyUserInfoViewModel = function() { 
var self = this; 
self.userList = ko.observableArray(); 
$.getJSON("http://localhost:8080/user/webresources/userinfo/"). 
     then(function (userinfos) { 
      $.each(userinfos, function() { 
       self.userList.push({ 
          userInfoUrl:ko.observable('/USERUI/UserEntry.html#'+this.userInfoId), 
        userInfoId:ko.observable(this.userInfoId), 
        policyHolderEmail: ko.observable(this.policyHolderEmail), 
       }); 
      }); 
     }); 

我想知道如何才能UserEntry頁面會知道哪個ID是越來越傳遞給它的頁面,以及如何我會讓剩下的電話讓Id傳遞給安寧的URL。

欣賞了一些代碼樣本的任何幫助,鏈接等。

感謝

+0

您是否希望在網格中創建一個超鏈接的列,並且您希望將點擊重定向到相應的詳細信息頁面傳遞行ID。讓我們知道。 –

+0

@supercool是的你是正確的,我正在使用一個超鏈接作爲一個列,並在點擊它想要把用戶帶到所有數據填寫的詳細信息頁面... – ngcode

+1

好的請檢查答覆貼,我希望這有助於。歡呼 –

回答

1

在你userEntry.html,如果你想獲得id的值傳遞:

<script> 
    var id = window.location.hash; 
</script> 

我記得Firefox有一個稍微不同的行爲,因爲它解碼片段中的URL編碼字符,所以如果你想要原始內容,你也可以c onsider using:

<script> 
    var id = window.location.href.split("#")[1]; 
</script> 
-1

不知道你怎麼能得到從JavaScript中的URL參數,但如果你願意用PHP你可以得到帶有$ _REQUEST ['Id']的Id參數用於生成新的REST調用。

所以您的href將類似於 「/USERUI/UserEntry.php?Id=5」

要使用該變量在JavaScript您UserEntry頁面上,你可以這樣做:

<script> 
    var id = <?php $_REQUEST['Id']; ?> 

    //generate your restful query here. 
</script> 
+0

我不是很熟悉PHP有沒有什麼辦法可以使用JSP來做同樣的事情...... – ngcode

+0

這個問題沒有說明他們使用的服務器技術。引入PHP作爲Javascript問題的解決方案並不合適。使用javascript從URL獲取參數也很簡單。這是一個很差的答案 – Tyrsius

+1

對不起,我只是想提供一些關於如何解決問題的指南。 –

2

你應該嘗試這樣

查看:

<ul data-bind="foreach: items"> 
    <li> 
     <a data-bind="attr: { href: id }, text: name,click:function(){alert(id)}"></a> 
    </li> 
</ul> 

視圖模型:

var viewModel = { 
    items: [{'id':1,'name':"one"},{'id':2,'name':"two"},{'id':3,'name':"three"}]   
}; 

ko.applyBindings(viewModel); 

樣品工作撥弄here

+0

我試過這個,它的工作原理......但我想點擊調用viewmodel函數,並將id作爲參數傳遞給函數。一旦我明白了,我可以根據ID進行REST調用,並獲取該特定ID的所有詳細信息......謝謝 – ngcode

+0

確定試試這個http://jsfiddle.net/supercool/WbxPm/217/。乾杯 –