Как определить, существует ли в JQuery TMPL подпункт - PullRequest
2 голосов
/ 16 декабря 2011

У меня похожая проблема: см. Ссылку

Что мне нужно определить, существует ли данный SUBproperty . Мой JSON выглядит так

{
    "nodeX": {
        "sub_node1": {
            "items": {
                "A": "something",
                "B": "etc"
            }
        },
        "sub_node2": {
            "items": {
                "A": "another thing",
                "B": "blablabla",
                "C": {
                    "top": 50,
                    "left": 75
                }
            }
        }
    }
}

Как я могу сделать оператор IF, чтобы увидеть, существует ли nodeX.sub_node2.items.C?

Если я сделаю это, я получу ошибки: {{if $ {nodeX.sub_node2.items.C}} ... {{/ if}}

Ответы [ 3 ]

0 голосов
/ 14 января 2012

Шаблоны jQuery используют нотацию JavaScript с () для объекта верхнего уровня (вашего контекста данных), поэтому для проверки необходимо использовать

typeof nodeX === 'undefined' ? valueIfUndefined : nodeX

Затем, чтобы проверить существование подобъекта, вы должны быть в состоянии сделать

('sub_node1' in nodeX) ? 'yes!' : 'no!'

Если вы просто условно отображаете свойства, вы можете на самом деле пропустить их проверку самостоятельно и просто сделать

${items.A}${items.C}

, потому что фреймворк на самом деледелать эти проверки для вас, поскольку он заполняет шаблон.Если свойства не существуют, он не пытается выполнить операторы.

0 голосов
/ 23 декабря 2013

Оператор IF выглядит следующим образом:

{{if typeof nodeX.sub_node2.items.C !== "undefined"}}
0 голосов
/ 16 декабря 2011

Когда вы пытаетесь получить доступ к несуществующему свойству на Object, возвращается undefined, который, разумеется, никогда не будет иметь никаких свойств.

Вам необходимо создать эту сложную проверку..

if (nodeX && nodeX.sub_node2 && nodeX.sub_node2.items && nodeX.sub_node2.items.C) {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...