2

ノックアウトとjquerymobileを使用しようとしていますが、機能しません。これが私のコードです:

<!DOCTYPE html>     
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <script src="/nw/scripts/jquery-1.8.2.js"></script>
    <script src="/nw/scripts/knockout-2.1.0.debug.js"></script>
    <script src="/nw/scripts/jquery.mobile-1.2.0.js"></script>
    <link rel="stylesheet" href="/nw/scripts/jquery.mobile-1.2.0.css" />
        <title>title</title>
</head>
    <body>
        <div>
<script type="text/javascript">
    function AppViewModel() {
        this.test = [{ "name": "noam", "age": "36" }, { "name": "yael", "age": "34"}];
    }
    $(document).ready(function () { 
        ko.applyBindings(AppViewModel());
        });
</script>
<ul data-bind="foreach: test" id="myList">
    <li>test <span data-bind="text: name"></span></li>
</ul>
        </div>
    </body>
</html>

これを実行すると、次のエラーが発生します。キャッチされないエラー:NOT_FOUND_ERR:DOM例外8

jquerymobileスクリプトをコメントアウトすると、機能します。

どんな助けでも適用されます

4

1 に答える 1

0

問題の直接の原因は、と呼ばれる<script>ブロックの配置です。次のように、ブロックをタグにko.applyBindings移動すると、この例はそのまま機能します(イベントと属性の使用にも注意してください) 。<script><head>pageinitdata-role="page"

<!DOCTYPE html>     
<html>
<head>
  <meta name="viewport" content="width=device-width" />
  <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
  <script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.1.0.debug.js"></script>
  <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
  <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
  <title>title</title>
  <script type="text/javascript">
    function AppViewModel() {
      this.test = [{ "name": "noam", "age": "36" }, { "name": "yael", "age": "34"}];
    }
    $(document).bind('pageinit', function () {
      ko.applyBindings(AppViewModel());
    });
  </script>
</head>
  <body>
    <div data-role="page">
      <ul data-bind="foreach: test" id="myList">
        <li>test <span data-bind="text: name"></span></li>
      </ul>
    </div>
  </body>
</html>

jquery mobileとknockoutの両方がDOMを変更し、DOMエラーは、一方のライブラリがDOM要素を移動し、もう一方のライブラリが後でアドレス指定しようとした、それらの間の衝突の兆候であることに注意してください。

JQMとノックアウトを連携させるには(それらが機能します)、JQMがいつ/どのようにDOMに変更を加えるかについて十分に理解している必要があります。このページは良い出発点かもしれません。

于 2012-11-17T08:27:09.787 に答える