淘汰JS内联三元
Knockout JS Inline Ternary
我正在尝试检查某些数据是否为空,然后显示数据或消息。
我现在有下面的代码,它显示我的文本并在末尾添加省略号
<p data-bind="text:$data['Preview Text'] + '...'"></p>
理想情况下,这将检查preview text
,如果没有,那么它将返回另一条消息。我曾尝试过实现这一点,但我无法实现。
<p data-bind="text: preview() ? $data['Preview Text'] + '...' : 'aaaaaaaa'"></p>
我的第一个建议是不要将此逻辑放在数据绑定中,而是放在视图模型中。它更容易调试,更容易更改,并保持HTML的可读性。
我假设您有一个可观察的字符串,其中包含预览文本,但可以为空。(如果下次也显示实际的javascript模型,那会有所帮助)
要生成标签,可以使用ko.computedObservable
或ko.pureComputed
。一个例子:
var originalLabel = ko.observable("A label");
var displayLabel = ko.pureComputed(function() {
return originalLabel() ? originalLabel() + "..." : "No Label";
});
CCD_ 4在CCD_。如果原始标签为空,则返回默认文本"No Label"
。如果原始标签不为空,则会向其添加"..."
。
一个工作示例:
var VM = function() {
this.originalLabel = ko.observable("Initial Text");
this.displayLabel = ko.pureComputed(function() {
var originalLabel = this.originalLabel();
return originalLabel ? originalLabel + "..." : "No label set";
}, this);
};
ko.applyBindings(new VM());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<input type="text" data-bind="value: originalLabel, valueUpdate: 'keyup'" />
<div>Generated value: <strong data-bind="text: displayLabel"></strong>
</div>
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 当js函数's已执行
- 要求未定义JS回调参数
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 淘汰JS内联三元
- 车把中有三元运算符吗.js
- js:三元运算符中的多重返回
- 三元操作 JS 不起作用
- Angular.js HTML标签上的三元语句
- JS三元操作符vs if/else
- 如何使用三元运算符angular.js和html5
- 在Chart.js和AngularJs中使用三元选项