淘汰条件工具

时间:2013-06-10 16:13:15

标签: javascript knockout.js

我需要根据菜单项名称添加条件工具提示。我是淘汰赛的新手,并不确定最好的方法来解决这个问题。

 <div id="pageMenu" data-bind="foreach: Pages">
        <div data-bind="visible: $data.accessAllowed() ">
            <a data-bind="click: $parent.openPage, css: { 'selected': Selected }"><div data-bind="text: MenuItemName"></div></a>

3 个答案:

答案 0 :(得分:1)

在此示例中,标题取决于foo和bar是否具有相同的文本。例如,如果您将foo的文本更改为foo,则标题将为title2

function bla(){
        self.text = ko.observable("Some text");
        self.bar = ko.observable("bar");
        self.foo = ko.observable("bar");
    }

ko.applyBindings(new bla());

<p data-bind="text: text, 
    attr:{
     'title': bar() === foo() ? 'title1' : 'title2'
     }">
</p>

答案 1 :(得分:0)

您可以在视图模型中定义函数,您可以在其中显示工具提示的条件或隐藏它:

function ViewModel(menuItemName) {
    ......
    self.visibleDiv = ko.computed(function () {
        //here you have the item that your are displaying.
        //So put here your logic and then 
        //you should return false or true
        .......
    });
}

然后在你的HTML中

<div class="editor-label" data-bind="text: MenuItemName,visible: $root.visibleDiv(MenuItemName)">

答案 2 :(得分:0)

这应该是您正在寻找的。

<div id="pageMenu" data-bind="foreach: Pages">
  <div data-bind="visible: $data.accessAllowed() ">
    <a data-bind="click: $parent.openPage, css: { 'selected': Selected }">
      <div data-bind="attr : {'title' : ($data.MenuItemName() == 'criteria'? 'tooltip1' : 'tooltip2')} "></div>
    </a>
  </div>
</div>

我希望它有所帮助。