javascript – 传递一个返回ko.computed值的函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 传递一个返回ko.computed值的函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2562字,纯文字阅读大概需要4分钟。
内容图文
![javascript – 传递一个返回ko.computed值的函数](/upload/InfoBanner/zyjiaocheng/770/8788a78660a046749a6406e5040cb91f.jpg)
我有两个函数生成和测试.当用户点击一个按钮时,会调用generate然后调用test函数.我收到以下错误:
Pass a function that returns the value of the ko.computed.
在测试函数中抛出错误:
var unmapped = ko.mapping.toJS(this);
这是我的具有ko.observable属性的viewmodel.
这是两个功能.如果我移动测试函数的内容来生成一切正常但我需要逻辑在两个不同的函数中.我能做什么?
我非常困在这里.任何帮助都会受到很大的影响.
generate = function () {
if (!omega.validatableFranchiseGeneration.validate()) {
return false;
}
omega.franchiseInfo.IsForGeneration(true);
test();
}
var test = function () {
getIpsAndPorts();
for (var i = 0; i < omega.franchiseInfo.LanguagesInfoViewModel().length; i++) {
if ($.isArray(omega.franchiseInfo.LanguagesInfoViewModel()[i].SubMenuItemsViewModel)) {
omega.franchiseInfo.LanguagesInfoViewModel()[i].SubMenuItemsViewModel = omega.franchiseInfo.LanguagesInfoViewModel()[i].SubMenuItemsViewModel[0];
}
}
var unmapped = ko.mapping.toJS(this);
var jsonData = ko.toJSON(unmapped);
$.ajax({
url: "/franchise/Save",
type: "POST",
// data: ko.toJSON({ folderName: FolderName }),
data: { franchiseInfoViewModel: jsonData },
//traditional: true,
//contentType: "application/json; charset=utf-8",
dataType: 'json',
success: function (data, textStatus, xhr) {
window.location.href = data.redirectToUrl;
},
error: function (request, status, error) {
jsonValue = jQuery.parseJSON(request.responseText);
omega.franchiseInfo.errorMessages([]);
for (var i = 0; i < jsonValue.errorMessages.length; i++) {
omega.franchiseInfo.errorMessages.push({ errorMessage: ko.observable(jsonValue.errorMessages[i].ErrorMessage) });
}
for (var i = 0; i < omega.franchiseInfo.LanguagesInfoViewModel().length; i++) {
InitializeViewLanguagesInfo(omega.franchiseInfo.LanguagesInfoViewModel()[i]);
}
}
});
}
解决方法:
没有看到你的所有代码,这很难确定,但如果代码(原样)直接包含在generate中,那么我愿意打赌这不是你认为它在测试函数中的作用.这在测试函数内部具有与生成内部不同的含义.
启动Chrome或Firebug并在var unmapped = ko.mapping.toJS(this)上设置断点;线.运行程序,当断点命中时,转到控制台并查看它.它是你的ViewModel吗?
如果这是你期望的内部生成,你总是可以像这样调用测试:
test.apply(this);
这将为方法调用显式设置此上下文.
另一种选择是在ViewModel中设置一个自变量.这通常在顶部完成,看起来像:var self = this;.通过创建这个变量,你可以在外部“函数”范围内的任何函数内引用self’,而不必担心这个波动的价值.
–
这是一个简单的小提琴来模拟我认为发生的事情:http://jsfiddle.net/jearles/aLFWe/
打开Chrome或Firebug控制台,查看已记录的对象.请注意,当我刚调用updatea()时,Window是记录的对象,但在原始单击函数中是Object,当我调用updateb.apply(this)或updatec()(引用self)时.
内容总结
以上是互联网集市为您收集整理的javascript – 传递一个返回ko.computed值的函数全部内容,希望文章能够帮你解决javascript – 传递一个返回ko.computed值的函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。