我正在尝试在MVC4应用程序中设置amplifyjs。我正在尝试做一个返回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编程的新手,我已经花了几个小时来解决这个问题,但还没弄清楚。如果有人可以指导您,或者至少有一些技巧可以在这里为我调试,那将有很大的帮助。

最佳答案

您似乎没有使用闭包,因此您的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函数将视图模型作为第一个参数,将DOM元素作为可选的第二个参数。您的视图模型在哪里?

关于javascript - amplifyjs未知resourceId,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14723413/

10-11 23:47