我正在使用似乎无法正常工作的按钮上的单击绑定创建此简单页面。这是代码:

<!DOCTYPE html>
<html>
  <head>
        <script type="text/javascript" src = "https://cdnjs.cloudflare.com/ajax/libs/knockout/3.3.0/knockout-min.js"></script>
  </head>

  <body>
    <div class="banner-bottom" width="100%" >
    <div class="floatleft"><button  data-bind="click: $root.showActivity">click me </button></div>
    <div class="floatright">
        <div data-bind="if: showActivityMenu">here is a message!</div>
        <div class="inner"> some values here</div>
    </div>
    <div style="clear:both;"></div>
</div>
  </body>
<script>
function AAsearchViewModel() {
    var self = this;
    self.showActivityMenu =  ko.observable(true);
    self.showActivity = function () {
        self.showActivityMenu = ko.observable(false);
    };
}

ko.applyBindings(new AAsearchViewModel());

</script>
</html>


在单击绑定上,我尝试同时使用和删除$root$parent,但这对输出没有影响。任何线索在这里做错了什么?

最佳答案

可观察变量是函数,因此在您的函数showActivity中,您无需将其分配给可观察的showActivityMenu新值,而是将其作为函数来分配新值。更改此代码:

self.showActivity = function () {
    self.showActivityMenu = ko.observable(false);
};


有了这个:

self.showActivity = function () {
    self.showActivityMenu(false);
};


您可以在knockout documentation中详细了解什么是可观察对象以及如何使用它们。特别注意阅读和写作可观察部分

10-06 07:16