Knockout数据绑定点击

时间:2017-03-07 13:25:14

标签: javascript post knockout.js get

我正在尝试了解我公司使用的第三方网站上的按钮。该按钮为用户注册一个班级。

<a class="btn btn-large btn-blue" href="javascript:void(0);" 
        data-bind="click: $root.clickAction.bind($data, ActionType)">
        <span data-bind="text: Title">Sign up</span></a>

我希望在公司内部网站的页面上提供此按钮,但我不熟悉Knockout。我理解一个GET请求,所以如果那个按钮做了这样的事情,那么我会得到它。

thirdparty.com?method=register&classId=1234&userId=abcde

将淘汰按钮转换为GET或以某种方式在我们的内部网站上向第三方网站提供注册机制是否可行? 我当然可以粘贴更多的来源,因为我确定需要更多。

我尝试使用Firefox开发人员工具并查看网络流量。如果这是不可行的话,我不想继续旋转我的车轮。

1 个答案:

答案 0 :(得分:1)

Knockout提供了几个对象来访问不同级别的上下文,$ root就是它们。 $ root对象表示根上下文中的主视图模型对象。例如,如果您的HTML元素位于另一个绑定上下文中,例如在foreach中,并且您希望在每次迭代中使用根视图模型的方法:

 var ViewModel = function() {
    this.actionTypes = ko.observableArray([
        { ActionType: "Type A", Title: "Title A"},
        { ActionType: "Type B", Title: "Title B"},
        { ActionType: "Type C", Title: "Title C"}]);

    this.clickAction = function(action) {
        // your ajax request would go here
        alert(action);
    }
};

ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<div data-bind="foreach: actionTypes">
    <a class="btn btn-large btn-blue" href="javascript:void(0);" data-bind="click: $root.clickAction.bind($data, ActionType)">
         <span data-bind="text: Title">Sign up</span>
    </a>
<div>