3

jquery.load関数を使用してページを動的にロードしましたが、ロードされたページがviewModelにバインドされていませんか?

app.js

function viewModel(){
    var self = this;
    self.users = ko.observable();

    Sammy(function() {
        this.get("#/users",function() {
            $.get("/api/users",function(data){
                self.users(data);
            });
            $("#content").load("pages/users.html");
        });
    }).run("#/");
}

ko.applyBindings(new viewModel());

index.html:

<html>
    <body>
        <div id="content"></div>
        <script src="statics/js/lib/jquery-1.8.2.js"></script>
        <script src="statics/js/lib/knockout-2.2.0.debug.js"></script>
        <script src="statics/js/lib/knockout.mapping.js"></script>
        <script src="statics/js/lib/sammy.js"></script>
        <script src="statics/js/lib/app.js"></script>
    </body>
</html>

pages / users.html

<ul data-bind="foreach: users">
    <li><span data-bind="text: fullName"></span></li>
</ul>
4

2 に答える 2

11
$("#content").load("/pages/users.html", function () {
   ko.applyBindings(new viewModel());
}

それをする必要があります...

于 2012-11-06T14:59:41.450 に答える
-1

動的なページの読み込み後にバインディングを再適用する問題を解決しました

function viewModel(){
    var self = this;
    self.users = ko.observable();

    Sammy(function() {
        this.get("#/users",function() {
            $.get("/api/users",function(data){
                self.users(data);
            });
            $("#content").load("pages/users.html", null, function (response, status, xhr) {
                if (status != "error") {
                } 
                    ko.applyBindings(self, $(".dynamic-page-content").get(0)); 
                }
            });
        });
    }).run("#/");
}

ko.applyBindings(new viewModel());
于 2012-11-06T15:01:46.257 に答える