0

私がやろうとしているのは、私の ajax 呼び出しから最初の結果を取得して.portfolio--activediv に入れてから、この最初の項目を ajax 結果から削除してから、.portfolio--active.

ループは完璧に機能しています。私が抱えている問題は、.portfolio--active. ループに入ったり、何らかの方法で関数名を参照したりせずにデータを出力する方法がわかりません。例: <ul data-bind="foreach: items">reefers to this: hutber.portfolio.ko.self.items = ko.observableArray([]);without it being in al

マークアップ

     <section>
    <h2>portfolio</h2>
    <div class="portfolio--active">
        <!--<img alt="" src="/img/clients/vw.jpg">-->
        <img alt="" data-bind="attr: {src: '/img/clients/' + headline.id+'.jpg'}">
        <h3><a href="#">Volkswagen.co.uk</a></h3>
        <date>Febuary, 2012 - <a href="#">Zone Ltd.</a></date>
        <p>Lorem text</p>
        <tags><i title="jQuery" class="icon-rss upsideLeft"></i><i title="jQuery" class="icon-html5 upsideLeft"></i></tags>
    </div>
    <div class="portfolio--options">
        <ul data-bind="foreach: items">
            <li data-bind="attr: {'data-id': $data.id}">
                <img alt="" data-bind="attr: {src: '/img/clients/' + $data.id+'.jpg'}">
                <h4 data-bind="text: title"></h4>
            </li>
        </ul>
    </div>
</section>

JS

hutber.portfolio.ko = {
    init: function(){
        ko.applyBindings(new hutber.portfolio.ko.portfolioViewModel());
    },
    portfolioViewModel: function(){
        hutber.portfolio.ko.self = this;

        hutber.portfolio.ko.self.items = ko.observableArray([]);
        hutber.portfolio.ko.self.headline = ko.observableArray([]);

        $.getJSON('/portfolio/json').done(function(info){

            //build headline item
            hutber.portfolio.ko.self.headline(info.slice(0,1));

            //remove first item in array only leave none headline items
            info = info.slice(1,info.length);

            //update items with updated info
            hutber.portfolio.ko.self.items(info)
        });
    }
};
4

1 に答える 1

0

バインディングで配列のインデックスを参照できます[0]が、あなたの場合はheadline、オブザーバブルを作成info.shift()し、配列の最初の項目を削除して返して の値を設定する必要があるようですheadlineinfo次に、スライスを行わずにアイテムをそのまま設定できます。

    $.getJSON('/portfolio/json').done(function(info){

        //build headline item
        hutber.portfolio.ko.self.headline(info.shift());

        //update items with updated info
        hutber.portfolio.ko.self.items(info)
    });
于 2013-01-29T03:06:35.260 に答える