2012-05-08 14 views
1

私は、ADO.Netをデータソースとして使用してMVC 4シングルページアプリケーションを開発しました。 IDでビューをフィルタリングしようとすると、不運にもセッション変数が試されました。ここでビューのコードは次のとおりです。SPAノックアウトJSフィルタ

<script type="text/javascript" src="@Url.Content("~/Scripts/BloodPressuresViewModel.js")"></script> 
<script type="text/javascript"> 
    $(function() { 
     upshot.metadata(@(Html.Metadata<KOTest2.Controllers.DALController>())); 

     var viewModel = new MyApp.BloodPressuresViewModel({ 
      serviceUrl: "@Url.Content("~/api/DAL")" 
     }); 
     ko.applyBindings(viewModel); 
    }); 
</script> 

と煕はcalssコードでは、JavaScriptファイルである:

..... 
    var entityType = "BloodPressure:#KOTest2.Models"; 
    MyApp.BloodPressure = function (data) { 
     var self = this; 

     // Underlying data 
     self.ID = ko.observable(data.ID); 
     self.PHN = ko.observable(data.PHN); 
     self.Day = ko.observable(data.Day); 
     self.Systolic = ko.observable(data.Systolic); 
     self.Diastolic = ko.observable(data.Diastolic); 
     self.HeartRate = ko.observable(data.HeartRate); 
     upshot.addEntityProperties(self, entityType); 
    } 
..... 

私は最善の解決策は、コントローラからビューにViewBagを使用してIDを渡すことだと思います。どのように私はそれを行うことができます任意のアイデア!私はプログラマを経験しておりませんので

は、事前に

<tbody data-bind="foreach: bloodPressures"> 

感謝を(foreachの)をフィルタリングすることが可能となります。フィルタリングを行うための

+0

あなたがしようとしていることは本当に明確ではありません。何をフィルタリングしようとしていますか?既にページにIDがあるようです。 – Tyrsius

+0

IDがクラスにあり、ユーザーのログイン時にIDを使用してデータベースをフィルタリングする必要があります。ありがとう – hncl

答えて

0

私は私はあなたがデータベースにアクセスする方法を理解していないですが、あなたはこのような何か行うことができます(右のサーバー上に、?):

<table data-bind="foreach: rows"> 
    <tr> 
     <td>id: <span data-bind="text: ID"></span></td> 
     <td>PHN: <span data-bind="text: PHN"></span></td> 
     .... 
    </tr> 
</table> 

とあなたのJavaScriptで

function viewModel() { 
    var self = this; 
    this.loggedIn = ko.observable(false); 
    this.rows = ko.observableArray([]); 

    // return an array of objects to display to the user 
    function getDataFromServer() { 

     return ...; 
    } 

    ko.computed(function() { 
     if (this.loggedIn()) 
      this.rows(getDataFromServer()); 
    },this); 

    ... 
} 

認証が成功した後、this.loggedIn(true)を実行すると、計算された関数がサーバからのプルとの設定をトリガします。これにより表示が更新されます。

関連する問題