2015-01-27 2 views
1

Я использую нокаут, и я хочу сравнить, если значение недоступно или нет. Есть ли способ в JavaScript/нокаут, я могу это сделать?Я хочу сравнить, если значение «недоступно» javascript

<!-- ko if: User().details()[0] != undefined --> 
     <p>Your defined</p> 
<!--/ko--> 

Я попытался undefined, но это не работает. Кто-нибудь знает, что я могу сравнить с этим, поэтому он проверяет, недоступно ли значение или нет?

+1

Это может иметь смысл быть определен как вычисленное значение. –

+0

Если проблема связана с ошибкой 'object is not a function', как указано ниже, вам нужно будет обновить вопрос с помощью кода модели нокаута. Вероятно, что 'User' или' details' не является функцией. –

ответ

1

Вам необходимо сравнить typeof значение с 'undefined'. Например:

<!-- ko if: typeof User().details()[0] !== 'undefined' --> 
     <p>Your defined</p> 
<!--/ko--> 

См. MDN documentation for this type of check.

И отрывок, который иллюстрирует это:

var x = { 
 
    y: 50 
 
}; 
 

 
document.getElementById('output').innerHTML = 'x.y is undefined: ' + (typeof x.y === 'undefined') + '; x.z is undefined: ' + (typeof x.z === 'undefined');
<div id="output"></div>

+0

Можете ли вы показать мне, как я применил бы это к моему коду выше? –

+0

@DomAdams, пожалуйста, см. Мой обновленный ответ. –

+0

не работает? говорит, что объект не является функцией –

0

хорошо вместо проверки погоды что-то не определен и если вы находитесь в дилемме всегда использовать with (контейнер-менее в вашем сценарии) который точно определяет цели.

Вид:

<!-- ko with:$data.User1 --> 
     <p data-bind="text:$data"> defined</p> 
<!--/ko--> 

<!-- ko if:$data.User --> 
     <p>Your defined</p> 
<!--/ko--> 

вид Модель:

var viewModel = { 
User: ko.observable('charlie') 
}; 
ko.applyBindings(viewModel); 

В окне вы можете видеть я намеренно использовал with:user1 еще ваш код не сломают его просто перестать смотреть дальше вниз. Если вы попробуете прочесть за if, вы получите неопределенную ошибку.

Ну, если вы действительно хотите продолжить работу с if, попробуйте использовать вычисленное и возвратить true/false на основе условий, которые вы налагаете. сделать вид пылесоса

Работа sample fiddle

Смежные вопросы