敲除菜单绑定开关视图并更改CSS

时间:2018-11-12 14:59:03

标签: javascript jquery knockout.js bootstrap-4 knockout-3.0

我有一个使用敲除/ jquery编写的单页应用程序。但是,我正在努力寻找一种更好的方法来处理要显示的视图。当我需要更多菜单项时,您可以看到代码将变得更加难以管理。我希望能够显示基于所选内容的视图并更改CSS,以便您也可以查看选择了哪个选项卡。

  <div class="col-md-2 sidebar">
        <div class="list-group">
            <a href="#" class="list-group-item list-group-item-action active" data-bind="click: ShowDashboard, css: DashboardSideBarCss">
                Dashboard
            </a>
            <a href="#" class="list-group-item list-group-item-action non-active-sidebar"
               data-bind="click: ShowCompanyDetails, css: CompanyDetailsSideBarCss">
                Company Details
            </a>
            <a href="#" class="list-group-item list-group-item-action non-active-sidebar"
               data-bind="click: ShowEmployees, css: EmployeesSideBarCss">
                Employees
            </a>
            <a href="#" class="list-group-item list-group-item-action non-active-sidebar"
               data-bind="click: ShowEtc, css: EtcCss">
                etc....
            </a>
        </div>

    </div>

1 个答案:

答案 0 :(得分:1)

使用单个类/单击查看更改链接,并添加一个包含视图“键”的新属性,例如:

<a href="#" data-view="dashboard" data-bind="click: changeContent">

在changeContent函数中读取属性并将其设置为新的可观察到的值,例如'currentView'

某事像:

vm.currentView($(this).attr('data-viewkey'))

(或者您习惯于编码)

然后您可以显示正确的内容,例如:

<div style="display:none" data-bind="visible:vm.currentView()=='dashboard'" >
....

或者您可以切换“活动类”

data-bind="attr:{class:'static_classes '+(vm.currentView()=='dashboard' ? 'active' : 'inactive' )}"

或添加单个动态选择器

 data-bind="attr:{class:'content_'+vm.currentView()}"