使用KnockoutJS创建ViewModel的语法错误

时间:2014-01-02 14:33:35

标签: knockout.js

我正在创建一个SPA,并希望实现KnockoutJS。我正在使用framework4。 当我尝试创建ViewModel时,我收到语法错误,指出预期标识符或字符串

var vm = {
    BankmedStatements: ko.observableArray(),
};

Ajax Call:

 function GetStatements(){
        $.ajax({
            url: "Default.aspx/LoadBankmedStatements",
            type: "POST",
            contentType: "application/json",
            success: function (response) {
                alert("Hi");
                vm.BankmedStatements(ko.utils.unwrapObservable(ko.mapping.fromJS(response.d)));
            },

            error: function(jqXHR, textStatus, errorThrown){
                alert(errorThrown);
            }
        });
    };

代码隐藏:

[System.Web.Services.WebMethod]
public static List<BankmedStatements> LoadBankmedStatements()
    {
        List<BankmedStatements> statements = new List<BankmedStatements>();
        Live_DailyEntities db = new Live_DailyEntities();

        foreach (var item in db.BankmedStatments.Where(u=>u.fFileName == "ppn_recon_20131011.csv"))
        {

        }

        return statements;

    }

我不确定我是否忘记引用某些图书馆,但这里是我的参考资料:

<script src="Scripts/jquery.min.js" type="text/javascript"></script>
<script src="Scripts/jquery-migrate-1.2.1.min.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.10.2.js" type="text/javascript"></script>
<script src="Scripts/knockout-3.0.0.debug.js" type="text/javascript"></script>
<script src="Scripts/knockout-3.0.0.js" type="text/javascript"></script>
<script src="Scripts/knockout.mapping-latest.debug.js" type="text/javascript"></script>
<script src="Scripts/knockout.mapping-latest.js" type="text/javascript"></script>

1 个答案:

答案 0 :(得分:1)

首先通过消除重复来修复您的引用。

<script src="Scripts/jquery-1.10.2.js" type="text/javascript"></script>
<script src="Scripts/jquery-migrate-1.2.1.min.js" type="text/javascript"></script>
<script src="Scripts/knockout-3.0.0.js" type="text/javascript"></script>
<script src="Scripts/knockout.mapping-latest.js" type="text/javascript"></script>

您使用的是WebAPI吗?看起来你是这样的,这些对象变成了JSON,这很好。但是,在你的成功函数中

vm.BankmedStatements(ko.utils.unwrapObservable(ko.mapping.fromJS(response.d)));

什么是“response.d”。很可能你的响应是一个JSON对象数组,所以response.d是一个无效的引用。