启用具有多个布尔可观察标志的绑定
Enable binding with multiple boolean observable flags
尝试使用基于两个标志的数据绑定来绑定启用状态。如果flagA
为true并且flagB
为false,则我们需要启用输入框。
var viewModel = function () {
var self = this;
self.flagA = ko.observable(true);
self.flagB = ko.observable(false);
self.changeState = function () {
self.flagA(false);
}
}
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<input type='text' data-bind='enable: flagA && !flagB' />
<button data-bind='click:changeState'>changeState</button>
有人能帮我找出为什么它不起作用吗?
我尝试过使用enable:function(){flagA && !flagB}
这样的函数来实现这一点。但它不起作用:当我使用按钮更改状态时,它不会观察到。
因为flagA
和flagB
是可观察性的(它们是函数),所以如果在表达式中使用它们,则需要在没有任何参数的情况下调用它们来获得值:
<input type='text' data-bind='enable: flagA() && !flagB()' />
演示JSFiddle。
尽量避免在视图中添加逻辑,这是一种糟糕的做法。为此,添加computed
变量
self.isEnabled = ko.computed(function() {
return this.flagA() && !this.flagB()
}, this);
并像往常一样绑定:
<input type='text' data-bind='enable: isEnabled' />
参见fiddle
相关文章:
- knockoutjs可观察数组
- 多次发射多个可观察器的问题
- 未激发路由的控制器属性上的观察者
- 全局标志仅与第一个匹配项匹配的Regexp
- 无法在关闭弹出窗口时传递可观察的数据
- firefox插件:退出不工作的应用程序观察器
- 如何收集Knockout可观察性以放入JSON
- 在rxjs中巧妙的蒸汽可观察合并
- Knockout observable没有观察到其中一个属性
- 如何在标志中检查权限
- 将属性设置为未定义时未通知观察者
- javascript测试是否存在两个标志中的任何一个
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- KOValidation在错误消息中获取可观察值、$index()、$data等
- 启用具有多个布尔可观察标志的绑定
- 为什么prototypjs观察到回调函数有绑定
- 类叶组件中的connect()是react+redux中反模式的标志吗
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作
- Ember:当子控制器同时观察到父控制器触发请求的相同属性时
- --Node.js中的和谐标志0.12抛出SyntaxError