【问题标题】:Access current my jquery plugin instances and variables inside it访问当前我的 jquery 插件实例和其中的变量
【发布时间】:2014-11-27 00:22:52
【问题描述】:

我是创建 jquery 插件的新手,我使用淘汰赛绑定创建了它以更加动态,并且它工作正常,但我需要访问应用于 HTML 元素的实例的淘汰赛视图模型,我该怎么做?

(function ($) {
$.fn.CFITGrid = function (options) {
    return this.each(function () {
        var defaultOpthions = {
            // here default options values
        };

        var settings = $.extend({}, defaultOpthions, options);

        function CFITGridViewModel() {
            // class I will use it
        }

        var CFITGridViewModelObject = new CFITGridViewModel(); // Variable I need to access
        // do somthing
    });
}})(jQuery);
//In the page
$(document).ready(function () {
$("#Datadiv").CFITGrid({
    DefaultLoadDataUrl: "api/apiUserInfo/GetList?pageNumber=" + 1,
    DefaultPropertiesName: ["FirstNme", "LastName", "UserName"],
});
// I need to access the instance of the plugin and variable which inside it here
});

【问题讨论】:

  • 我需要在应用后访问创建的 CFITGrid 实例及其变量
  • 您的问题中有很多代码,其中大部分可能与实际问题无关。您能否更新您的问题,去除所有不需要的部分,也许向我们展示您到目前为止所做的尝试,以便问题变得更加明显/具体?也许把它变成repro 也会有所帮助。
  • 你是对的,我做到了,谢谢 Jeroen

标签: javascript jquery knockout.js


【解决方案1】:

如果您可以访问任何绑定元素(即您不需要位于绑定的根目录),则访问 KO viewModel 非常容易。

如果你有绑定的根,这将返回绑定的视图模型:

ko.dataFor(rootElement);

如果您的视图模型是平面的(即它不包含子对象或集合),您可以执行完全相同的操作来从任何内部 dom 对象访问绑定的视图模型。但是,如果您的视图模型是分层的,您应该使用ko.contextFor(someElement),这将使您可以访问完整的context,即$data$parent$parents$root...

请参阅此淘汰文档:Using unobtrusive event handlers

【讨论】:

  • 感谢 JotaBe 先生,我明白了,但我仍然需要访问另一个未绑定视图模型的变量,例如 var var1 = [];我可以这样做吗?
  • taht 变量在哪里定义? “从那里”得到一些东西不是一个好主意。你应该想办法以一种清晰、直接的方式传递它。您为什么不使用一些示例代码打开另一个问题,以便我为您找到解决方案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 2022-08-11
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多