0

我想将Knockout.jsBootstrap Tour一起使用。特别是,我想将一些数据绑定单击处理程序附加到游览步骤中的按钮。

我创建了一个这样的简单游览:

var tour = new new Tour({
    steps: [
        {
            orphan: true,
            title: "Help Title",
            content: "<button data-bind='click: someBoundFunction'>Click me!</button>"
        }
    ]
});
tour.init();
tour.start(true);

可以使用这种绑定吗?或者由于 bootstraptour 的标记代码创建机制,这种绑定不会起作用?我这样尝试过,但是单击按钮不会执行该功能,也没有显示任何错误消息。

4

1 回答 1

3

Knockout 不会为新添加的元素自动更新绑定。不过有一个解决方法,请参阅这个问题(和相关的)。以下是基于此解决方法的可能解决方案。

所以你有一个主视图模型,它开始你的旅行:

function ViewModel(){
    var self = this;
    this.tour = new Tour({ 
        steps: [
            {
                orphan: true,
                title: "Help Title",
                content: '<button id="newButton" data-bind="click: showMessage">showMessage</button>',
                onShown: function(tour) {
                    // apply the bindings after content is added
                    ko.applyBindings(self, document.getElementById("newButton"));
                }
            }
        ]
    });
    this.startTour = function() {
        this.tour.init();        
        self.tour.start(true);        
    }
    this.showMessage = function() {
        alert('Hello!');
    }
}

工作演示。

于 2014-09-17T16:00:23.383 回答