2015-06-23 3 views
0

Я пытаюсь связать текст с одним тегом в теге абзаца. Он работает неправильно и не дает ошибок в браузере. Я использую Visual Studio для разработки. Я создал скрипку для показа проблемы, и там я получил ошибку, что привязка не определена.Связывание с нокаутом, отображающее значение

function checking(obj) 
{ 
    var self = this;  
    self.check = ko.observable(obj.count); 
    alert(self.check()); 
}; 

function MyVM() 
{ 
    var self = this;  
    self.MyArr = ko.observableArray();   
    var myObj = {count: 4}; 

    self.function1 = function(){ 

     self.MyArr.push(new checking(myObj));   
    }; 

    self.function1(); 

} 

ko.applyBindings(new MyVM(), document.getElementById('myId')); 

Мой HTML:

<div id = "myId"> 
    <p data-bind="text: check"></p> 
</div>  

я знаю, если я определить поле проверки в MyVM(), то он будет работать, но я хочу, чтобы использовать поле проверки из cheking (OBJ). Каким будет правильный путь для достижения этого.

Вот ссылка http://jsfiddle.net/6ymx8vja/

+0

, потому что 'check' внутри observableArray. попробуйте это http://jsfiddle.net/6ymx8vja/1/. cheers –

ответ

1

TRY строительство вид, как похожий на ViewModel

Вид:

<div data-bind="foreach:MyArr"> 
    <p data-bind="text: check"></p> 
</div> 

ViewModel:

function checking(obj) 
{ 
    var self = this;  
    self.check = ko.observable(obj.count); 
}; 

function MyVM() 
{ 
    var self = this;  
    self.MyArr = ko.observableArray();   
    var myObj = {count: 4}; 
    self.function1 = function(){ 
     self.MyArr.push(new checking(myObj)); //your `check` is present inside observableArray so you need to get hold of observableArray to access its inside content  
    }; 
    self.function1(); 
} 
ko.applyBindings(new MyVM()); 

работает скрипку до here

хорошо, если не хотите использовать foreach в виду вы можете получить прямой доступ через индекс как this

+0

Спасибо, я понял концепцию сейчас! – satyanshu

+0

Рад, что вы это сделали :) cheers –

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