【问题标题】:How can I access a variable outside of define in requirejs如何访问requirejs中定义之外的变量
【发布时间】:2018-04-27 22:16:43
【问题描述】:

我基于ko(淘汰赛)实现了以下模块。

define(['ko'],
    function(ko) {
        function compareViewModel() {
            var self = this;
            self.products = ko.observableArray([]);
            self.addProduct = function(p) {
                self.products.push(p);
            }
            self.visible = ko.computed(function() {
                return self.products().length > 0;
            });
        }

        return { cvm: compareViewModel() };
    });

我希望能够在define 之外访问cvm

$(function () {
    //ACCESS CVM HERE    
    $('.compare-chk').click(function () {
        var $chk = $(this).prev('input:checkbox');
        if ($chk !== 'undefined') {
            if (!$chk.is(':checked')) {
                cvm.addProduct($chk.attr('value'));
                console.log(cvm.products());
            }
        }
    });
});

这可能吗?

【问题讨论】:

    标签: javascript knockout.js requirejs


    【解决方案1】:

    为了访问cvm,您必须声明您需要定义它的模块:

    requirejs(['jquery', 'ko'], function($, ko){
        $(function () {
        //ACCESS CVM HERE    
            $('.compare-chk').click(function () {
                var $chk = $(this).prev('input:checkbox');
                if ($chk !== 'undefined') {
                    if (!$chk.is(':checked')) {
                        ko.cvm.addProduct($chk.attr('value'));
                        console.log(ko.cvm.products());
                    }
                }
            });
        });
    });
    

    注意我们作为requirejs 的第一个参数传递的数组中的模块和库很可能需要一些调整。您必须指定这些文件在您的应用程序中的位置。比如here是requirejs的入门教程,here是库的官方文档。

    【讨论】:

    • @AliKhakpouri 欢迎您。我很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多