这里的上下文,以更好地理解:调用knockoutjs viewmodel函数
我在我的主页中有一个datagrid与每行中的按钮。当它在用户点击它通过AJAX的jQuery加载其他页面和弹出它的引导模式对话框内:
<script>
var sharedadminID = 0;
var alreadyloaded = 0;
...
function EditClick(args) {
var gridObj = $("#DetailsGrid").data("ejGrid");
var data = gridObj.getSelectedRecords()[0].ID;
sharedadminID = data;
$("#prdmodalbody").load("pages/modals/AddEditPRD.html");
}
</script>
的AddEditPRD.html页有它的定义,像这样
<script>
var PRDVM = function() {
ID = ko.observable();
DESIGNATION = ko.observable();
PRIX = ko.observable();
loadproduct = function() {
alert("innerloadproduct2222");
jQuery.ajax({
url: "/Admin/GetProduct?i=" + sharedadminID,
success: function (html) {
ID = html.ID,
DESIGNATION = html.DESIGNATION,
PRIX = html.PRIX
},
async: false
});
}
loadproduct();
};
$(document).ready(function() {
if (alreadyloaded == 0) {
VM = new PRDVM();
ko.applyBindings(VM, document.getElementById("#prdmodalbody"));
alreadyloaded = 1;
}
else
VM.loadproduct();
});
</script>
它的工作视图模型时我第一次点击按钮,但不是在那之后。
在控制台上没有错误,并且似乎负载产品功能未被触发 第一次除外。
任何帮助的欢迎
可观察到的暴露,并正确绑定,并且它们与阿贾克斯更新调用结果,每次单击父页面的编辑按钮时,调用ready函数 – user2475096
无论如何,我主要关心的是要知道loadproduct方法为什么只是第一次触发。谢谢 – user2475096
不,它们不是,在你的文章中'''可观察的'变量在视图模型构造函数实例之外是* not * visible。 [其他答案](http://stackoverflow.com/a/41381810/419956)清楚地显示了它们之间的差异,因为*会使用'self = this'这个成语来暴露它们。 – Jeroen