0

私はそよ風/ノックアウトに非常に慣れていませんが、必要なことを 99% 達成しています。私はホット タオル テンプレートを使用しており、そよ風を介してアイテムのリストを正常に取得しています。エンティティ (ITBAL) は、データベースの最初の Entity Framework エンティティです。Fiddler に返される JSON を見ると、正しいデータが表示されます。問題は、data.results のすべてのプロパティが依存オブザーバブルであり、生の値自体ではないことです。

data.results 配列を表示しようとするカスタム グリッド コントロールがあります。オブザーバブルを想定していないため、値の代わりに単に「関数依存オブザーバブル」を表示しています。

オブジェクトをアンラップしようとしましたが、循環参照エラーが発生し続けます。ITBAL は何にも関連付けられていないため、その理由はわかりません。

Fiddler が報告するデータは次のとおりです。

[{"$id":"1","$type":"WebUIHtml5HotTowel.Models.ITBAL, WebUIHtml5HotTowel","IBITNO":"A100                       ","IBWHID":"1 ","IBITCL":"50","IBITSC":"3 ","IBSUSP":" ","IBVNNO":"100   ","IBPRLC":"        ","IBSCLC":"        ","IBCCCD":"P","IBPICD":" ","IBSAFL":"Y","IBSTCS":399.99000,"IBUSCS":0.00000,"IBAVCS":414.95214,"IBLCST":7.00000,"IBLCCC":20.0,"IBLCDT":110923.0,"IBLSCC":20.0,"IBLSDT":130111.0,"IBLXCC":19.0,"IBLXDT":990102.0,"IBMXO1":2100.000,"IBMXO2":0.000,"IBMXO3":0.000,"IBMNO1":5.000,"IBMNO2":0.000,"IBMNO3":0.000,"IBFOQ1":0.000,"IBFOQ2":0.000,"IBFOQ3":0.000,"IBOHQ1":327.000,"IBOHQ2":0.000,"IBOHQ3":0.000,"IBAQT1":1576.000,"IBAQT2":0.000,"IBAQT3":0.000,"IBBOQ1":50.000,"IBBOQ2":0.000,"IBBOQ3":0.000,"IBPOQ1":448.000,"IBPOQ2":0.000,"IBPOQ3":0.000,"IBIQT1":1446.000,"IBIQT2":0.000,"IBIQT3":0.000,"IBRMD1":10.000,"IBRMD2":0.000,"IBRMD3":0.000,"IBRYD1":10.000,"IBRYD2":0.000,"IBRYD3":0.000,"IBISM1":0.000,"IBISM2":0.000,"IBISM3":0.000,"IBISY1":0.000,"IBISY2":0.000,"IBISY3":0.000,"IBAMD1":0.000,"IBAMD2":0.000,"IBAMD3":0.000,"IBAYD1":0.000,"IBAYD2":0.000,"IBAYD3":0.000,"IBMMD1":0.000,"IBMMD2":0.000,"IBMMD3":0.000,"IBMYD1":0.000,"IBMYD2":0.000,"IBMYD3":0.000,"IBSMD1":1.0,"IBSMD2":0.0,"IBSMD3":0.0,"IBSYD1":1.0,"IBSYD2":0.0,"IBSYD3":0.0,"IBBLME":335.000,"IBBLYO":2680.000,"IBBLLY":1441.000,"IBNMTY":8.0,"IBNMLY":11.0,"IBQSMD":21.000,"IBQSYD":21.000,"IBQSLY":20.000,"IBISMD":16318.19,"IBISYD":16318.19,"IBISLY":45714.87,"IBCSMD":373.46,"IBCSYD":373.46,"IBCSLY":67.00,"IBDQMD":0.000,"IBDQYD":0.000,"IBDQLY":0.000,"IBDSMD":0.00,"IBDSYD":0.00,"IBDSLY":0.00,"IBDCMD":0.00,"IBDCYD":0.00,"IBDCLY":0.00,"IBNOMD":18.0,"IBNOYD":18.0,"IBNOLY":18.0,"IBPKMD":15.0,"IBPKYD":15.0,"IBPKLY":14.0,"IBINUS":"        ","IBIAID":0.0,"IBSAID":0.0,"IBCQT1":1527.000,"IBCQT2":0.000,"IBCQT3":0.000,"IBFCST":"Y","IBDRSH":" ","IBWMIU":"JP","IBFL15":"               ","IBUS20":"                    ","IBLPR1":0.00000,"IBLPR2":0.00000,"IBLPR3":0.00000,"IBLPR4":0.00000,"IBLPR5":0.00000,"IBLPCD":" ","IBABCC":"B","IBPRCL":0.0,"IBQBCL":"   ","IBACDC":"Y","IBTDCD":" ","IBDOUM":"   ","IBTP01":0.0,"IBTP02":0.0,"IBTP03":0.0,"IBTP04":0.0,"IBLMCC":20.0,"IBLMDT":130513.0,"IBTMPH":"Y","IBCOMC":" ","IBCOMF":0.00000,"IBITCT":"    ","IBEOQT":0.000,"IBITCM":0.0,"IBBRVW":" ","IBPTID":"  ","IBQTLT":0.0000,"IBCTY1":"AUS","IBCTY2":"AUS","IBTXCD":"1","IBREVS":"Y","IBITXC":"     ","IBMNOQ":0.000,"IBSTUS":0.000,"IBUS30":"                              ","IBPSLN":" ","IBPLIN":"N","IBUPDP":"Y","IBDFII":"2011-08-11T00:00:00.000","IBLHRK":"A","IBPLNC":"          "}]

私のコントローラー:

    [BreezeController]
public class ItemInquiryController : ApiController
{

    readonly EFContextProvider<AplusEntities> _contextProvider = new EFContextProvider<AplusEntities>();

    [System.Web.Http.HttpGet]
    public string Metadata()
    {
        return _contextProvider.Metadata();
    }

    [HttpGet]
    public IQueryable<ITBAL> ItemBalances(string itemNumber, string warehouse)
    {
        return _contextProvider.Context.ITBALs.Where(i => i.IBITNO == itemNumber && i.IBWHID == warehouse)
                               .OrderBy(i => i.IBWHID)
                               .ThenBy(i => i.IBITNO);


    }

}

ビューモデルの関連部分:

        var manager = new breeze.EntityManager("api/ItemInquiry");
    var store = manager.metadataStore;

    var itbalInitializer = function (itbal) {
        itbal.CompositeKey = ko.computed(function () {
            return itbal.IBITNO() + itbal.IBWHID();
        });
    };

    store.registerEntityTypeCtor("ITBAL", null, itbalInitializer);
    var index = "0" + (args.pageNum * args.pageSize);

    var query = new breeze.EntityQuery("ItemBalances")
        .withParameters({ itemNumber: "A100", warehouse: "1" })
        .take(args.pageSize);

    if (index > 0) {
        query = query.skip(index);
    }

    manager.executeQuery(query).then(function (data) {

        vm.itbals.removeAll();

        var itbals = data.results;//[0].Data;
        itbals.forEach(function (itbal) {
            vm.itbals.push(itbal);
        });

        vm.totalRecords(1);
        itemBalancesGrid.mergeData(vm.itbals(), args.pageNum, parseInt(vm.totalRecords()));

    }).fail(function (e) {
        logger.log(e, null, loggerSource, true, 'error');
    });

かなり単純なものが欠けているに違いないと思いますが、それは私を逃れています。

更新: ApiController から BreezeController 属性を削除したところ、正しく機能しました。

4

1 に答える 1