1

MVC4アプリケーション内でamplicatejsをセットアップしようとしています。私がしようとしているのは、jsonデータを返す単純なサーバー呼び出しを行うことだけです。別のサンプルプロジェクトで動作させました。

しかし今、私は同じコードを実際のアプリと統合しています。次のコードがあります。

      //sampleservice.js
      amplify.request.define("getSampleData", "ajax", {
          url: "/SampleData/GetSampleData",
          dataType: "json",
          type: "GET"    
      });

      function getSampleData(callbacks) {
            return amplify.request({
              resourceId: "getSampleData",
              success: callbacks.success,
               error: callbacks.error
            });
     };

そして、これが私のJquery.Readyでこれを消費しようとしている方法です。

    var list;
     $(document).ready(function () {

     list = ko.observableArray([]);
     ko.applyBindings($('#body'));
     getSampleData({
     success: function (data) {
        $(data).each(function (index, item) {
            list.push(item);
        });
    },
    error: function (response) {
        alert(response);
    }
});
 });

jsがすべてのブレークポイントに到達しているのを確認できますが、次のjs例外が発生しています

    Uncaught amplify.request: unknown resourceId: getSampleData amplify.js:477
    amplify.request amplify.js:477
    getSampleData sampleservice.js:34
    (anonymous function) sampleviewmodel.js:9
    fire jquery-1.9.0.js:1017
    self.fireWith jquery-1.9.0.js:1127
    jQuery.extend.ready jquery-1.9.0.js:416
    DOMContentLoaded

ご覧のとおり、私はJsプログラミングの初心者であり、これに数時間費やしましたが、何も理解できませんでした。誰かがガイドできるか、少なくともここで私のためにそれをデバッグするためのいくつかのヒントがあれば、それは大きな助けになります。

4

1 に答える 1

1

クロージャを使用していないように見えるため、Amplify定義を使用できません。以下に示すように、すぐに呼び出される関数式(iife)内にコードを配置します。これにより、増幅定義コードが実行getSampleDataされ、オブジェクトのプロパティとして使用できるようになりdataserviceます。だからあなたは電話しますdataservice.getSampleData(...)

var dataservice = (function(amplify) {
  var init = function() {
      amplify.request.define("getSampleData", "ajax", {
          url: "/SampleData/GetSampleData",
          dataType: "json",
          type: "GET"
      });
  },

  getSampleData = function (callbacks) {
    return amplify.request({
        resourceId: "getSampleData",
        success: callbacks.success,
        error: callbacks.error
    });
};

init();

return {
    getSampleData: getSampleData
};

})(amplify);

ノックアウトの使用も正しくないことに注意してください。このko.applyBindings関数は、最初のパラメーターとしてビューモデルを取り、オプションの2番目のパラメーターとしてDOM要素を取ります。ビューモデルはどこにありますか?

于 2013-02-28T23:47:27.303 に答える