javascript - 更新 knockout 可观察值

标签 javascript knockout.js

我在更新 knockout 可观察值时遇到了一些问题。我需要将 linkClick 中的值传递到 showMenu 中。

当我像这样手动更新showMenu(“Value”)时,值将很好地传递到 View 。然而,它必须是一个动态值。这本质上就是我的代码。

//View
<a data-bind="click: linkClick" data-sec="Value">Click Me</a>

<!-- ko if: showMenu() === 'Value' -->
    <ul class="Menu">
        <li>Link 1</li>
        <li>Link 2</li>
    </ul>
<!-- /ko -->

define(
  [''],
  function () {
    var _this = this;
    return {

        showMenu: ko.observable(""),
        linkClick: function(data, event) {

            var element = event.target,                    
                Menu = $(element).attr('data-sec');

            var myMenu = this.showMenu();
            this.showMenu(Menu);

        }
    }
});

我还尝试在全局范围内使用_th​​is而不是this,但这会产生_this.showMenu()不是函数错误。请帮忙。

PS。我必须在第一个函数定义中编写所有内容。

最佳答案

使用data(这是你的 View 模型)而不是this

function vm() {
  return {
    showMenu: ko.observable(""),
    linkClick: function(data, event) {
      var element = event.target,
        Menu = $(element).attr('data-sec');

      // use data instead of this
      data.showMenu(Menu);
    }
  }
}

ko.applyBindings(vm());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<a data-bind="click: linkClick" data-sec="Value">Click Me</a> 
<!-- ko if: showMenu() === 'Value' -->
<ul class="Menu">
  <li>Link 1</li>
  <li>Link 2</li>
</ul>
<!-- /ko -->

关于javascript - 更新 knockout 可观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165033/

相关文章:

javascript - Angular 新路由器将 $scope 注入(inject) Controller

jquery - 为数据表选择最快的模板插件

knockout.js - KnockoutJS 实时验证本地化

javascript - 无法在使用 .append() 添加的图像上调用 jQuery .error()

javascript - 使用 javascript 更改 <label> 元素失败的 style.color

javascript - ko点击引用错误

knockout.js - 从observableArray获取具体元素

knockout.js - 如何通过 knockout 在点击时切换 bool 值?

javascript - 找不到 Node.js socket.io.js 或未定义 io

javascript - Auth laravel5-angular-material-starter 的本地存储