如何使用knockoutjs切换html元素的可见性
how do i toggle the visibility of an html element using knockoutjs ?
我使用的是knockoutjs v3.1.0。我正试图建立一个大师级的细节式视图。我遇到的问题是元素没有显示(尽管它们在隐藏(。我的模拟代码位于http://jsfiddle.net/jwayne2978/qC4RF/3/
这是我的html代码。
<div data-bind="foreach: users">
<div>Row</div>
<div data-bind="text: username"></div>
<div data-bind="visible: showDetails">
<div data-bind="text: address"></div>
</div>
<div>
<a href="#"
data-bind="click: $root.toggleDetails">
Toggle Div
</a>
</div>
这是我的javascript代码
var usersData = [
{ username: "test1", address: "123 Main Street" },
{ username: "test2", address: "234 South Street" }
];
var UsersModel = function (users) {
var self = this;
self.users = ko.observableArray(
ko.utils.arrayMap(users, function (user) {
return {
username: user.username,
address: user.address,
showDetails: false
};
}));
self.toggleDetails = function (user) {
user.showDetails = !user.showDetails;
console.log(user);
};
};
ko.applyBindings(new UsersModel(usersData));
应该发生的是,当用户单击链接时,应该显示相应的HTMLdiv。控制台清楚地显示用户对象的属性正在更改,但HTML元素的可见性没有更改。我还明确地使showDetails属性可观察,但这没有帮助。
showDetails : ko.observable(false)
任何帮助都将不胜感激。
var UsersModel = function (users) {
var self = this;
//var flag=ko.observable(true);
self.users = ko.observableArray(
ko.utils.arrayMap(users, function (user) {
return {
username: user.username,
address: user.address,
showDetails: ko.observable(false) //it should be observable
};
}));
self.toggleDetails = function (user) {
user.showDetails(!user.showDetails());
console.log(user);
};
};
Fiddle演示
相关文章:
- 将元素的可见性绑定到另一个元素
- 通过单选按钮状态设置HTML元素的可见性
- 如何切换DIV元素的可见性
- 如何切换文档元素的可见性
- 使用 jQuery 切换 2 个元素的可见性
- 是否可以在可见性隐藏元素上对幻灯片进行动画处理
- 使用 jQuery 检查 DOM 元素的继承可见性
- 使用 elementFromPoint() 方法检查元素可见性
- 我无法测试在我的主干视图中渲染的元素的可见性
- 取消设置元素可见性,更改 innerHTML,然后转换回来
- 我应该在隐藏元素之前检查可见性吗?
- 如何正确评估“if”语句的元素可见性不透明度隐藏性
- 如何检查表达式中的元素可见性
- 如何在phantomjs中等待元素可见性
- 使用jQuery设置元素可见性
- 当垃圾邮件与悬停事件时,元素可见性的问题
- 切换元素可见性的Angular指令
- 基于元素可见性显示/隐藏警告
- 基于布尔值在ember-js中切换元素可见性
- 根据验证结果切换元素可见性