2016-07-19 3 views
0

Я хочу установить свойство css, используя условие, использующее обычную переменную, отличную от наблюдаемых. Как:Установка свойства css с использованием обычной переменной для нокаута js

a.html файл:

<span class="label" data-bind="text: isApproved, css: sampleglobalvar == true ? 'label-success' : 'label-important'"></span> 

a.js файл:

Edit:

define('durandal/app'],function(app) { 
    var a = function() { 

    sampleglobalvar = 'true' 
    }; 
} 

Я получаю сообщение об ошибке, таких как 'sampleglobalvar' не существует в viewmodel. Я знаю, что наблюдаемое должен быть использован, но у меня есть другие проблемы, связанные с наблюдаемым, где переключением между «истинным» и «ложной» для наблюдаемых создавали проблемы:

Как, если я использую:

sampleglobalvar = ko.observable(""); 

установка:

if(//condition) 
{ 

sampleglobalvar(true); 
} 
else 
{ 
sampleglobalvar(false); 
} 

не убирал наблюдаемый должным образом, из-за которой я получаю разные результаты.

Подводя итог, можно ли использовать обычную переменную javascript, чтобы использовать ее в свойстве css data-bind?

+0

Вы помещаете 'sampleglobalvalue' в функцию annonymus, что делает его NON global .... – Dellirium

ответ

1

Да, это вполне возможно. Для истинного глобального (т. Е. Материала на window) вам нужно охватить переменную в вашей привязке данных.

Пример:

function RootViewModel() { 
 
    // Plain property on the "global" (i.e. Root) view model: 
 
    this.plainProp = true; 
 
    
 
    // True "global" variable: 
 
    window.myGlobal = true; 
 
} 
 

 
ko.applyBindings(new RootViewModel());
.error { background: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script> 
 

 
<p data-bind="css: plainProp === true ? 'error' : 'plain'">Root plain prop</p> 
 
<p data-bind="css: window.myGlobal === true ? 'error' : 'plain'">Global plain prop</p>

Вы включили функцию областей и модуль загрузчика (? Requirejs) в смеси в вашем вопросе, но до тех пор, как вы получите scopings право на этот точный сценарий должен работать аналогично моему примеру. Если у вас есть проблема с , что конкретный бит, я предлагаю задать другой вопрос, включая минимальный Repro (то есть больше (и синтаксически корректный) код, чем тот, который в настоящее время имеет вопрос).

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