在设置变量之前,不要尝试评估data-bind

时间:2016-12-01 10:23:23

标签: javascript knockout.js

在淘汰赛中有没有办法告诉它等待评估html的某些部分,直到设置一个值?

第一种方法是我目前正在做的工作,而最底层的方法就是我希望拥有的(或类似的)。

<div>
    <span data-bind="text: ObservableThing() != null ? ObservableThing().Name : ''">
</div>

<div data-bind="visible: isReady()">
    <span data-bind="text:ObservableThing().Name">
</div>

我确定有人在此之前对此感到恼火并解决了它......如果它还没有内置而且我只是没有找到它。

编辑:更多上下文。 Observable事物的定义如下:model.ObservableThing = ko.observable();并且它在某个时候由此代码调用jQuery.Get设置:model.ObservableThing (resultData);

2 个答案:

答案 0 :(得分:0)

很简单,使用if。

<div data-bind="if: isReady()">
    <span data-bind="text:ObservableThing().Name">
</div>

这一切都有效。

答案 1 :(得分:0)

由于'ObservableThing'是一个复杂的对象,因此使用with绑定绑定它,并且所有后代都可以绑定到'ObservableThing的属性。它比使用if更干净,更好,因为淘汰将决定何时渲染'ObservableThing'及其元素。

<div data-bind="with: ObservableThing">
    <span data-bind="Name">
</div>

查看此链接以获取更多信息:http://knockoutjs.com/documentation/with-binding.html