javascript - 使用 RequireJS knockout 自定义 Bootstrap 绑定(bind)错误

标签 javascript jquery twitter-bootstrap knockout.js requirejs

我有一个用于 Bootstrap 工具提示的自定义 knockout 绑定(bind),有时页面加载正常,有时我在绑定(bind)中抛出此错误。

$(...).tooltip is not a function

我在发生这种情况的部分设置了一个断点,有时 jquery 对象没有任何 Bootstrap 函数。我只能假设这是 Bootstrap 库被 require 加载的时间问题。就像我说的,它不会每次都发生,当我打开开发工具控制台时,它似乎更频繁地发生。

这是我的需求配置

requirejs.config({
    waitSeconds: 200,
    shim: {
        "bootstrap": {
            deps: ['jquery'],
            exports: "$.fn.tooltip"
        }
    },
    enforceDefine: true,
    paths: {
        jquery: 'jquery-1.11.3.min',
        bootstrap: 'bootstrap.min',
        moment: 'moment.min',
        knockout: 'knockout.min',
        appVM: 'appVM',
        custombindings: 'custombindings'
    }
});

还有我的绑定(bind)

define(['knockout', 'jquery', 'bootstrap'], function (ko, $, bootstrap) {
    ko.bindingHandlers.tooltip = {
        init: function (element, valueAccessor) {
            var local = ko.utils.unwrapObservable(valueAccessor()),
                options = {};

            ko.utils.extend(options, ko.bindingHandlers.tooltip.options);
            ko.utils.extend(options, local);

            $(element).tooltip(options);  //Error thrown here

            ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
                $(element).tooltip("destroy");
            });
        },
        options: {
            'container': 'body',
            'delay': { 'show': 1000, 'hide': 100 },
            'animation': 'true'
        }
    };
});

我的应用绑定(bind)

define(['jquery', 'bootstrap', 'appVM', 'knockout', 'domReady!'], 
    function(jquery, bootstrap, appVM, ko) {
    var vm = new appVM();
    ko.applyBindings(vm);
});

最佳答案

将您的 customBindings 添加到调用 ko.applyBindings 的模块的依赖项列表中

define(['jquery', 'bootstrap', 'appVM', 'knockout', 'customBindings', 'domReady!'],
    function(jquery, bootstrap, appVM, ko) {
    var vm = new appVM();
    ko.applyBindings(vm);
});

关于javascript - 使用 RequireJS knockout 自定义 Bootstrap 绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34340898/

相关文章:

javascript - jQuery 在两个字符串标识符之间选择 HTML

html - 无法垂直对齐高度为 auto 的 div 内的 2 个 div 的内容

html - dom crud 使 Bootstrap 中的滚动变慢

html - 如何使用 BootStrap 实现关于 "recent achievements"的 stackoverflow header 下拉菜单的 css?

javascript - PrimeFaces SelectManyCheckbox - 使用 Javascript 取消选中所有复选框

javascript - ng-model 不更新选择值

javascript - Browserify 与 Usemin

php - 我可以在请求的 javascript 中访问我的 ajax 请求的 href 吗?

jquery - 当我使用 CSS 为该行中的单元格添加边框时,如何锁定表格行的高度?

jquery - 为什么这种 css 动画和 jQuery 的组合不能在 Firefox 中工作?