2015-03-25 3 views
1

Я работаю с нокаутомJS, и у меня есть ошибка, когда я хочу закрыть блок div или h html tag. код My Javascript, где происходит ошибка:ошибка при работе с нокаутомJS видна

function myModel(){ 
this.flags = false; 
    this.getFlag = ko.computed(function(){ 
     if(this.flags == false){ 
      this.flags = true; 
     }else{ 
      this.flags = false; 
     } 
     console.log(this.flags); 
     return this.flags; 
    }); 
} 
ko.applyBindings(new myModel()); 

Мой HTML:

<button data-bind="click: getFlag">Click button</button> 
<h3 data-bind="visible: getFlag()">test visible</h3> 

Когда я нажимаю мою кнопку у меня есть это сообщение в консоли браузера:

false Uncaught Error: Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.knockout-3.3.0.js:44 gknockout-3.3.0.js:83 (anonymous function)

Когда я пишу мой код javascript без функции ko.computed()

this.flags = false; 
    this.getFlag = function(){ 
     if(this.flags == false){ 
      this.flags = true; 
     }else{ 
      this.flags = false; 
     } 
     console.log(this.flags); 
     return this.flags; 
    }; 

У меня есть это сообщение в консоли браузера:

истинного

При нажатии на кнопку у меня есть false и т.д. truefalsetruefalse но visible не работает. В чем проблема?

ответ

0

Итак, сначала вы должны объявить свои свойства, наблюдаемые:

var self = this; 
self.flag = ko.observable(false); 

Далее мы сделаем тумблер переключить флаг вперед и назад:

self.toggleFlag = function(){ 
    self.flag(!self.flag()); 
} 

Теперь вы можете связать:

+0

этот код не работает во мне, в результате у меня есть в консоли true false true false false –

+0

flags variable in function g etFlag() изменяет его значение, но глобальные флаги изменений не меняют его значение –

+0

Хорошо, я пропустил пару вещей в вашем посте. Обновлен мой ответ. –

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