我正在尝试在我的MVC4应用程序中设置放大器。我正在尝试做一个返回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编程的新手,你可以看到,我已经花了几个小时在这上面但却无法找到任何东西。如果有人可以指导或至少一些提示,我在这里调试它将有很大的帮助。
答案 0 :(得分: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
函数将视图模型作为第一个参数,将DOM元素作为可选的第二个参数。您的视图模型在哪里?