2012-05-08 2 views
1

Я разработал одностраничное приложение MVC 4 с использованием ADO.Net в качестве источника данных. Пытаясь отфильтровать представление по идентификатору, попробуйте переменные сеанса без какой-либо удачи. Вот мнение код:SPA Knockout JS Filter

<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 на вид из контроллера. Любая идея, как я могу это сделать!

Поскольку я не опытный программист, это будет возможно фильтровать (Еогеасп)

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

Спасибо заранее.

+0

Это не совсем понятно, что вы пытаетесь сделать. Что вы пытаетесь фильтровать? Похоже, у вас уже есть ID на странице. – Tyrsius

+0

Идентификатор находится в классе, мне нужно отфильтровать базу данных с помощью идентификатора при входе пользователя в систему. благодаря – 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), что приведет к тому, что вычисленная функция вызовет выключение с сервера и настройку this.rows(); это, в свою очередь, обновит дисплей.