【问题标题】:knockoutjs viewmodel not loading ajax returnknockoutjs viewmodel 未加载 ajax 返回
【发布时间】:2015-07-08 13:27:58
【问题描述】:

我是 Knockout 的新手,在将我的 ajax json 返回加载到视图模型中时遇到了问题。我正在使用 knockoutjs 映射插件。

这里是 json 返回:

{"operator":[{"employeeid":394,"Category":"mc","OpFirstName":"fred",
"OpSurname":"penner","RegNumber":"a12234","Status":"ft","SupervisorID":0,"Team":"a",
"TeamGroup":"a1","isSupervisor":"y"}]}

这是我的代码:

<table>
<tbody data-bind="foreach: OpviewModel.items">
    <tr>
        <td><ul>
                <li data-bind="text: OpFirstName"></li>
            </ul>
        </td>
    </tr>
</tbody>
</table>


<script type="text/javascript">


    function OpviewModel() {
        var self = this;

        $.getJSON("../controllers/GetAllOps.php", function (data) {
            OpviewModel.model = ko.mapping.fromJS(data);
            console.log(data);

        });

    }

    ko.applyBindings(new OpviewModel());

</script>

JSON 是使用 PHP_ENCODE 创建的。我试过只使用“foreach:operator”,但仍然没有运气。任何提示将不胜感激。 任何帮助都会很棒。

谢谢。

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    这一行:

    <tbody data-bind="foreach: OpviewModel.items">
    

    应该是

    <tbody data-bind="foreach: model.operator">
    

    还有这一点

    $.getJSON("../controllers/GetAllOps.php", function (data) {
        OpviewModel.model = ko.mapping.fromJS(data);
        console.log(data);
    });
    

    应该是

    $.getJSON("../controllers/GetAllOps.php", function (data) {
        self.model = ko.mapping.fromJS(data);
        console.log(data);
    });
    

    有4个问题,

    1. 绑定时不需要指定模型类名
    2. 您的视图模型上没有属性items - 您将其称为model
    3. 应用于model的模型没有属性items,属性为operator(根据你收到的json)
    4. 您尝试将属性添加到模型的定义中,而不是模型的实例中。

    【讨论】:

    • 我试过了,现在我得到一个错误: TypeError: c is null ...(g),h(b,g,d)}function h(b,c,d) {var e=!0,f=1===c.nodeType; f&&a.e.Kb(c);if(f&&d||a...
    • 我必须将模型定义为可观察数组吗??
    猜你喜欢
    • 2011-05-30
    • 2013-11-14
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    相关资源
    最近更新 更多