坚持Json,不能使用knockout-mapping控件将绑定应用于数据

时间:2013-12-12 03:33:38

标签: javascript json model-view-controller knockout.js

我坚持使用applybinding。似乎ViewModel没有绑定数据,我使用的是淘汰映射控件。请使用简单的术语,因为我是淘汰赛的新手,JQuery,JSON等

型号代码

 public class Property
 {
    [Key]
    public int PropertyId { get; set; }
    public string ProjectName { get; set; }
    public string Locality { get; set; }
    public string HouseNo { get; set; }
    public string Block { get; set; }
    public string Address1 { get; set; }
}

控制器代码

    public JsonResult GetAllProperties()
    {
        return Json(db.Property.ToList(), JsonRequestBehavior.AllowGet);
    }

Javascript代码

    var PropertyViewModal = function (data) { }

    var property;
    $.ajax({
        url: '@Url.Action("GetAllProperties")',
        type: 'GET',
        dataType: 'json',
        success: function (result) {
            var data = $.parseJSON(result);
            property = new PropertyViewModel(result);
            ko.applyBindings(new property());
        },
        error: function (result) {
            alert("error");
        }
    });

HTML代码

<table>
<tbody data-bind="foreach:property">
    <tr>
        <td>
            <span data-bind="text: ProjectName"></span>
        <td>
            <span data-bind="text: Locality"></span>
        </td>
        <td>
            <span data-bind="text: HouseNo"></span>
        </td>
        <td>
            <span data-bind="text: Block"></span>
        </td>
        <td>
            <span data-bind="text: Address1"></span>
        </td>
        <td></td>
    </tr>
 </tbody>

</table>

1 个答案:

答案 0 :(得分:0)

        property = new PropertyViewModel(result);

在这里,您要调用构造函数来创建实例对象

        ko.applyBindings(new property());

在这里,您将实例对象视为它本身就是一个构造函数,并尝试从中创建另一个实例对象。将行更改为

        ko.applyBindings(property);

所有这一切都假设PropertyViewModel()实际上做了某些事情,并且PropertyViewModal()只是实际代码中不存在的拼写错误。