9

私はこれを理解できないようです。私はすでに $(document).ready を試しましたが、まだうまくいきません。また、これら 2 つの値の名前専用の for ループを作成して、結果を var に保存し、その方法で渡すことも試みました。また、親divの内側と外側に検索を使用して、クラスとIDを入力に入れてみました。基本的に、ナビゲーションバーでそれを好きです。ところでlist.jsとknockout.jsを使用しています。foursquares api を使用して ajax リクエストを使用して会場を取得しています。

JS:

        var options = {
        valueNames: ['name', 'category']
    };

    var userList = new List('search', options);

HTML:

<body>
<nav>
    <h1 class="formattedH1">Downtown SA,TX</h1>
    <span>
      <input type="search" placeholder="Search" class="search" id="search">
      <input type="button" class="sort searchButton" value="List"></input>
    </span>
</nav>
<div id="map" class="map"></div>
<div class="list">
    <input type="search" placeholder="Search" class="search" id="search">
    <h1>My Top 5</h1>
    <!-- Square card -->
    <div class="card" id="favViewModel" data-bind="foreach: favList">
        <div class="expand">
            <h2 class="venueName" data-bind="text:name"></h2>
        </div>
        <div class="cardSupport" data-bind="attr: {src: image()}">
        </div>
        <div class="cardSupport" data-bind="text:address">
        </div>
        <a data-bind="attr: {href: website()}">Website</a>
    </div>
    <h1>Foursquare Recommended</h1>
    <div class="card" id="recViewModel" data-bind="foreach: recommendedSpotList  ">
        <div class="expand">
            <h2 class="venueName" data-bind="text:name"></h2>
        </div>
        <div class="cardSupport" data-bind="text:location">
        </div>
        <div class="cardSupport" data-bind="text:category">
        </div>
        <div class="cardSupport" data-bind="text:rating">
        </div>
    </div>
    <script src="js/tester123.js"></script>

4

2 に答える 2

2

他の同様のプロジェクトを閲覧している私の答えはとても簡単でした。彼らがこれに出くわした場合に誰かを助けるかもしれないと思った. 私は ajax 呼び出しを行っていたので、ajax リクエスト内で ko.applybindings への呼び出しを配置する必要がありました。特にリクエストが失敗した場合、バインディングは範囲外でした。リクエストの値をまだバインドしようとするのはなぜですか。HTML は上記のように、JS ajax リクエストについては以下を参照してください。

JS:

$.ajax({
    url: 'https://api.foursquare.com/v2/venues/explore',
    dataType: 'json',
    data: 'data',
    async: true,
    success: function(data) {

        venues = data['response']['groups'][0]['items'];

        //This is where I had to place the binding to get it to render properly.
        ko.applyBindings(new recommendedViewModel(), document.getElementById('recViewModel'));

    },
    error: function() {
        alert("An error occurred.");
    }
});
于 2015-09-20T17:41:54.873 に答える