knockoutJS не конвертирует Json в наблюдаемые - PullRequest
0 голосов
/ 18 января 2012

Я написал простое приложение для получения данных JSON с сервера Код C # общедоступное чтение JsonResult () { var products = db.Products; вернуть Json (GetProducts (), JsonRequestBehavior.AllowGet); }

    public IEnumerable<Product> GetProducts()
    {
        var data = db.Products.ToList();
        return (data);
    }

В представлении я написал следующее, чтобы связать данные модели представления.

<div>
<table data-bind="with: products">
    <thead><tr><th>From</th><th>To</th><th>Subject</th></tr></thead>
    <tbody data-bind="foreach: Object">
        <tr>
            <td data-bind="text: id"></td>
            <td data-bind="text: name"></td>
            <td data-bind="text: description"></td>
        </tr>    
    </tbody>
</table>
</div>
 <script type="text/javascript">
     function ProductsViewModel() {
         var self = this;
         self.products = ko.observable();
         $.getJSON("http://localhost:50998/Home/Read", function (data) {
             self.products = JSON.parse(data);
         });

}
     ko.applyBindings(new ProductsViewModel());
 </script>

Возвращение данных Json из действия выглядит следующим образом

[{"ID":1,"Name":"Roger","Description":"Test1"},{"ID":2,"Name":"Roger2","Description":"Test2"}]

После того, как я проанализировал JSON, я не могу использовать проанализированный объект для обновления наблюдаемого.

Кто-нибудь знает, почему это происходит?

1 Ответ

1 голос
/ 18 января 2012

Если вы хотите установить значение self.products (или значение любой другой наблюдаемой) равным результату JSON.parse, вам нужно назвать его следующим образом self.products(JSON.parse(data)).Наблюдаемые объекты похожи на функции, поэтому вам нужно обращаться с ними как с функциями; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...