首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >amplifyjs未知resourceId

amplifyjs未知resourceId
EN

Stack Overflow用户
提问于 2013-02-06 15:04:22
回答 1查看 754关注 0票数 1

我正在尝试在我的MVC4应用程序中设置amplifyjs。我所要做的就是做一个简单的服务器调用,返回json数据。我在我单独的样例项目中让它工作。

但现在我正在将相同的代码集成到我真正的应用程序中。其中包含以下代码。

代码语言:javascript
复制
      //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中使用它。

代码语言:javascript
复制
    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异常

代码语言:javascript
复制
    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编程的新手,我已经花了几个小时在这个上面,但是我什么也想不出来。如果这里有一些指导,或者至少是一些调试技巧,那将是非常有帮助的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-01 07:47:27

您似乎没有使用闭包,因此您的Amplify定义不可用。您可以将代码放在立即调用的函数表达式(iife)中,如下所示。这将运行增强定义代码,并使getSampleData作为dataservice对象的属性可用。所以你调用dataservice.getSampleData(...)

代码语言:javascript
复制
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);

请注意,您使用knockout也是不正确的。ko.applyBindings函数将视图模型作为第一个参数,将DOM元素作为第二个可选参数。你的视图模型在哪里?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14723413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档