0

我有一些html:

<tbody data-bind="foreach: Propertys">
            <tr>
                <td data-bind="text: Name"></td>
                <td data-bind="text: Postcode">                    
                </td>
                <td>
                    <a href='#/value: ID'>View</a>

                    <a data-bind="attr: { href: '#/property/' + ID() }">Report</a>
                </td>

            </tr>
        </tbody>

我显然有一个带有可观察属性的视图模型。

这是在水疗中心,加载我的仪表板的代码是:

function load(propertyID) {
        //we need to call data.property.load
        //get that data back and assign it to the view model.

        //get our dashboard data and bind to ui
        data.property.load(propertyID, function (result) {
            ko.applyBindings(new propertyModel(result),$('#propertyView')[0]);

            presenter.switchView('propertyView');

            toastr.success('Property Successfully Loaded', 'Successfully Loaded');
        }, function () {
            toastr.error('Error occured', 'Oh no');
        });
    }

我的页面上有不同的“视图”,但是当我转到一个然后返回到我的仪表板(即您在上面看到的 html)时,我重新抓取要显示的数据,尽管我再次这样做:

ko.applyBindings(new propertyModel(result),$('#propertyView')[0]);

我的数据:

<tbody data-bind="foreach: Propertys">

正在复制。

我是淘汰js的新手,我做错了什么?

4

1 回答 1

0

如果不知道您的演示者在做什么,这有点难以判断,但通常您会希望避免调用ko.applyBindings已经绑定的内容。

如果您尝试将新内容加载propertyModel到您的视图中,那么通常有助于对可观察对象使用withortemplate绑定,例如:

<div data-bind="with: currentPropertyModel">
   ...content here
</div>

然后,将 a 定义currentPropertyModel为 observable,调用 applyBindings 一次,然后currentPropertyModel使用要渲染的模型进行设置和清除。当您清除它时,内容将被删除,当您将其设置为新内容时,它将以该新模型作为上下文进行渲染。

于 2013-06-27T13:17:48.923 回答