1

既存のWebアプリケーションを、Backbone.jsで記述されたブランドスパンキングの新しいインターフェイスに置き換えようとしています。アプリケーションはPython+CherryPyで記述されたRESTfulAPIに支えられており、ホストページを更新することを嫌うため、最終的にはこれはすばらしいことです。

私の最初のステップは、ネット上に浮かんでいるさまざまなチュートリアルを使用して、Backbone.jsの概念実証をまとめることでした。これが私が思いついたものです:

<!DOCTYPE html>
<html>
<head>
    <script type="application/javascript" src="/static/js/jquery-1.8.2.min.js"></script>
    <script type="application/javascript" src="/static/js/underscore-min.js"></script>
    <script type="application/javascript" src="/static/js/json.js"></script>
    <script type="application/javascript" src="/static/js/ICanHaz.min.js"></script>
    <script type="application/javascript" src="/static/js/backbone.js-0.9.9-min.js"></script>

    <script type="application/javascript">
        $(function() {
            //logical model of a user
            var User = Backbone.Model.extend({});

            //visual representation of a user
            var CurrentUserView = Backbone.View.extend({
                render: function() {
                    this.el = ich.user(this.model.toJSON());
                    return this;
                }
            })

            //create a user and drop its representation into the DOM
            var currentUser = new User({username: "hello world"});
            var view = new CurrentUserView({model: currentUser});
            $('.content').append(view.el.render());
        });
    </script>
</head>
<body>
    <div class='content'>
        <p>The user representation should show up below this paragraph</p>
    </div>

    <!--ICanHaz user template -->
    <script id="user" type="text/html">
        <ul class="user">
            <li><a href="#">{{ username }}</a></li>
            <li><a href="#" id="logout">logout</a></li>
        </ul>
    </script>
</body>
</html>

残念ながら、このページをFirefoxにロードすると、ユーザー表現が.content div内に表示されず、エラーメッセージSyntaxError: JSON.parse: unexpected characterがWebコンソールに表示されます。

次のコードは私が望むことを正確に実行するため、この問題はCurrentUserViewに関連しているようです。

$(function() {
    //logical model of a user
    var User = Backbone.Model.extend({});

    //create a user and drop its representation into the DOM
    var currentUser = new User({username: "hello world"});
    $('.content').append(ich.user(currentUser.toJSON()));
});

ここで何が起こっているのですか?

4

2 に答える 2

1

$('.content').append(view.el.render());なぜこれが解析エラーになるのかはわかりませんが、そうあるべきだと思います$('.content').append(view.render().el);

于 2013-01-15T03:36:05.303 に答える
1

おやすみなさいの睡眠とコードでの2回目のパスの後、必要なjson2ライブラリの代わりにjsonライブラリをダウンロードしたようです。現在、すべてが期待どおりに機能しています。

于 2013-01-15T13:28:45.720 に答える