【问题标题】:visibility binding in knockout is not working淘汰赛中的可见性绑定不起作用
【发布时间】:2013-03-26 04:26:59
【问题描述】:

我有一个跨度,我将跨度与敲除绑定,以便在页面加载时它可以工作。我尝试通过锚标记单击绑定来更改值。

<a href='#'data-bind='click:ViewModel.setVisibility,disable:ViewModel.completeReview '>Show More</a>
<span data-bind="html: ViewModel.getText(Text),visible:ViewModel.completeReview "></span>

那么在我看来模型变化是

self.completeReview = ko.observable(false);
self.setVisibility = function () {
    return self.completeReview = true;
};

但它没有反映在可见性中。我在 firebug 中进行了调试。该方法被调用。 有人知道吗?

【问题讨论】:

  • 您显示的代码不足,无法找出问题所在。但是,如果您的 completeReview 是可观察的,则需要将其设置为 self.completeReview(1);
  • 我尝试了你引用的内容。但是点击链接时出现错误。TypeError: self.completeReview is not a function [Break On This Error] self.completeReview(true);跨度>
  • 您在 javascript 中使用 self.completeReview,但在数据绑定中仅使用 complete
  • @Thewads 这是我的错误道歉。我更新了问题。
  • @ArunChandranC 好吧,您应该能够从上面提出建议,通过说self.completeReview = true 您将可观察对象覆盖为纯布尔值。你可以试试你的数据绑定检查ViewModel.completeReview == true。是否有可能给出一个问题的jsfiddle?

标签: javascript knockout.js


【解决方案1】:

你不能像普通变量一样设置 observable。并且不需要在视图上返回任何内容,因为 observables 会自动通知您的 UI 更改。试试这个:

HTML

<a href='#'data-bind='click: ViewModel.setVisibility,disable:ViewModel.completeReview '>Show More</a>
<span data-bind="visible:ViewModel.completeReview ">
  Click to on Show More to hide or show me.
</span>

JS

function ViewModel()
{
  var self = this;

  self.completeReview = ko.observable(false);

  self.setVisibility = function () {
     self.completeReview(!self.completeReview());
  };
}

var ViewModel = new ViewModel();
ko.applyBindings(ViewModel);

Working Fiddle

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 2014-10-28
    • 2014-03-18
    • 1970-01-01
    • 2014-01-10
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    相关资源
    最近更新 更多