knockoutjs viewmodel没有加载ajax返回

时间:2015-07-08 13:27:58

标签: knockout.js

我是Knockout的新手,并且无法将我的ajax json返回加载到viewmodel中。我使用了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>

使用PHP_ENCODE创建JSON。我试过使用&#34; foreach:operator&#34;但仍然没有运气。任何提示将不胜感激。 任何帮助都会很棒。

感谢。

1 个答案:

答案 0 :(得分:0)

这一行:

<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. 您尝试将属性添加到模型的定义中,而不是它的实例。