【问题标题】:Binding not working for Knockout, ReferenceError when ko.applybindings on specific element当 ko.applybindings 在特定元素上时,绑定不适用于 Knockout、ReferenceError
【发布时间】:2014-02-05 04:41:55
【问题描述】:

我有这个 ajax 来获取数据

var homeSummaryViewModel;

$(document).ready(function () {
    getHomeSummaryViewModel();

});
function getHomeSummaryViewModel() {

    $.ajax({
        url: "/api/homeservice/get",
        type: "get",
        contentType: "application/json",
        success: function (result) {            
            homeSummaryViewModel = ko.mapping.fromJSON(result);

            ko.applyBindings(homeSummaryViewModel, $("#homeSummary").get(0));

        },
        error: function (result) {
            //handle the error, left for brevity
        }
    });
}   

这是我的html

        <div class="plan-name-bronze">
            <h4>Home</h4>
            <div class="icon">
                <i class="fa fa-trophy fa-5x"></i>
            </div>

        </div>
        <ul class=" text-left" id="homeSummary">
            <li class="plan-feature">Completed Level : <span data-bind="text: Level"></span> </li>                
            <li class="plan-feature">Total Score : <span data-bind="text: Score"></span> </li>
        </ul>
    </div>
</div>

这是我的 JSON

{"Level":"Noob","Score":788}

我在下面的 knockout-3.0.0.debug.js 中收到此错误,当 id 执行 homeSummaryViewModel.peek() 时我得到空值。我看到数据是从 Firebug 中的服务器发送的,如上面 JSOn 数据所示,ko.mapping 不会抛出错误它只是不工作可能???

ReferenceError: 级别未定义 return new Function("$context", "$element", functionBody);

【问题讨论】:

    标签: javascript jquery knockout.js knockout-mapping-plugin


    【解决方案1】:

    我不得不使用

    homeSummaryViewModel = ko.mapping.fromJS(result);
    

    而不是

    homeSummaryViewModel = ko.mapping.fromJSON(result);
    

    【讨论】:

      【解决方案2】:

      value 绑定仅适用于表单输入元素;您需要使用text 绑定。

      【讨论】:

      • 我也厌倦了文本并且得到了相同的结果,这就是为什么我转而查看 value 是否有效的原因。两者都不起作用。
      • 显示更多关于 JS 代码和 HTML 的上下文。
      • 添加了一些JS和html
      • 也许我需要检查填充到该模型中的内容,但是当我执行 console.log(homeSummaryViewModel) 时,我只能得到 observable()
      • 我在做 .peek() 时得到了 null,这意味着它没有映射它,我可以看到 firebug 中的 JSOn 成功返回并且 ko.mapping 执行时没有错误,有什么想法吗?跨度>
      【解决方案3】:

      问题是你绑定了$.get,我创建了一个简单的测试用例http://jsfiddle.net/PB9KL/,它工作正常。

      var homeSummaryViewModel;
      getHomeSummaryViewModel();
      
      
      function getHomeSummaryViewModel() {
      
                  homeSummaryViewModel = ko.mapping.fromJSON('{"Level":"Noob","Score":788}');
      
                  ko.applyBindings(homeSummaryViewModel,document.getElementById("homeSummary"));
      
      }
      

      【讨论】:

        猜你喜欢
        • 2015-01-29
        • 1970-01-01
        • 2017-01-10
        • 1970-01-01
        • 1970-01-01
        • 2014-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多