【发布时间】:2014-11-20 15:54:59
【问题描述】:
使用 Knockout.js,如果绑定到元素的 observable 未定义,是否有办法显示元素的原始内容?
<p data-bind="text: message">Show this text if message is undefined.</p>
<script>
function ViewModel() {
var self = this;
self.message = ko.observable();
};
ko.applyBindings(new ViewModel());
</script>
我知道有使用visible、hidden 或if 的变通方法,但我觉得那些太乱了;我不希望将相同的元素写出两次,每个条件写一次。
另外,我不想使用任何类型的默认可观察值。走这条路,如果 JS 被禁用,那么什么都不会出现。爬虫也一样:他们只会看到一个空的 <p> 标签。
总而言之,我想说“如果存在则显示此消息,否则不理会元素及其文本。”
这背后的原因是我想首先使用 Razor 填充我的元素。
<p data-bind="text: message">@Model.Message</p>
然后,在浏览器中,如果启用了 JS,我可以随意使用它。但是,如果没有 JS 或者用户是爬虫,他们至少会看到通过 Razor 提供服务器端的默认值。
【问题讨论】:
标签: javascript razor knockout.js