[英]knockout js visible data-bind attribute not showing results
我正在使用knockout js - 我有一個視圖頁面,我在兩個不同的布局中顯示相同的信息。 我正在使用knockout-templates,我將我的淘汰腳本放在一個單獨的文件中,我在視圖頁面中調用它。
問題
目前我要么同時顯示兩個不同的布局(網格視圖和列表視圖),要么根據我如何配置數據綁定得到無布局。 我想要一個切換按鈕,它將改變顯示項目的布局 - 我不介意有兩個按鈕一個用於網格,一個用於列表。
查看頁面
<div class="btn-group">
<button type="button" class="btn" data-bind="click: toggleView" >Toggle</button>
</div>
<div data-bind="template: {name:'grid', foreach: Users, visible: grid()}"></div>
<div data-bind="template: {name:'list', foreach: Users, visible: !grid()}"></div>
<script style="float:left" type="text/html" id ="grid">
<section id="Images" style=" float:left">
<section id="users">
<div id="nameImage">
<figure id="content">
<img width="158" height="158" alt="Gravatar" data-bind="attr:{src: GravatarUrl}"/>
<figcaption>
<a title="Email" id="emailIcon" class="icon-envelope icon-white" data-bind="attr:{'href':'mailto:' + Email()}"></a>
<a title="Profile" id="profileIcon" class="icon-user icon-white"></a>
</figcaption>
</figure>
<p data-bind="text:Name"></p>
</div>
</section>
</section>
</script>
<script style="float:left" type="text/html" id="list">
<div>
<div class="border_bottom light buffer" style="width:60%; float:left; margin:10px; height:58px">
<img style="margin-right:5px; vertical-align:middle" width="58" height="58" alt="Gravatar" data-bind="attr:{src: GravatarUrl}"/>
<span style="height:58px; vertical-align:middle" data-bind="text:Name"></span>
<a style=" margin: 5px; vertical-align:middle" title="Email" class="icon-envelope icon-black" data-bind="attr:{'href':'mailto:' + Email()}"></a>
<a style=" margin: 5px; vertical-align:middle" title="Profile" class="icon-user icon-black"></a>
</div>
</div>
</script>
@section scripts{
@Scripts.Render("~/bundles/user" + ViewBag.Layout.AppVersionForUrls)
<script type="text/javascript">
(function ($) {
$.views.User.GetUser('@url');
})(jQuery);
</script>
}
Knockout js我在一個不在視圖中的單獨文件中
$.views.User.UserViewModel = function (data) { var self = this; self.Name = ko.observable(data.Name); self.Email = ko.observable(data.Email); self.MD5Email = ko.observable(data.MD5Email); self.GravatarUrl = ko.computed(function () { return 'http://www.gravatar.com/avatar/' + self.MD5Email() + '?s=300&d=identicon&r=G'; }); self.grid = ko.observable(true); self.toggleView = function () { self.grid(!self.grid()); } };
我真的很想得到任何幫助:)
您可以根據諸如showGrid或showList之類的ko.observable添加visible:屬性以相互隱藏。
如果你制作一個js.fiddle,我可以讓你更好地了解它們的位置。
我認為你的'可見'綁定應該在你的模板綁定之外,如下所示:
<div data-bind="template: {name:'grid', foreach: Users}, visible: grid()"></div>
<div data-bind="template: {name:'list', foreach: Users}, visible: !grid()"></div>
這是一個小提琴。
我也有這個問題。 使用if和ifnot而不是visible。 這解決了我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.