2013-04-03 1 views
-1

В Еогеасп я связывание данных, как показано ниже:Как прочитать данные по щелчку связывания в Knockout

<ul class="state-list" data-bind="foreach: places"> 
<li class="city-container" data-bind="click:currentPlace">         
    <div> 
     <img class="city-img" data-bind="attr: { src: img, alt: name }"> 
     <div class="city-facts"> 
      <em data-bind="text:name"></em> 
      <!-- Not that we're not caching the stats template. This is to demonstrate passing ajax options --> 
      <div data-bind="template: { name: 'stats', templateUrl: 'templates/info', ajax: { cache: false } }"></div> 
     </div> 
     <span style="clear:both;"></span> 
    </div> 
</li> 
</ul> 

И называя «currentPlace» по щелчку: А в ViewModel я написал так:

this.currentPlace = function(data,event){ 
     console.log("data=>",data);   
    } 

Когда я печатаю данные, он дает мне полный объект.

Теперь мой вопрос: как получить доступ к этому объекту, чтобы получить мои данные, такие как изображение, имя, город и т. Д.?

Я пробую как data.name, данные ['name'], но он не работает.

EDIT Как вы можете видеть, я использую другое имя шаблона: 'stats', теперь, если я хочу прочитать данные о нем, как я могу это сделать?

Шаблон 'Стат' ниже:

<ul data-bind="foreach: stats"> 
    <li class="stat-container" data-bind="ifnot: editing"> 
     <div class="stat stat-name" data-bind="text:name"></div> 
     <div class="stat stat-value" data-bind="text:value, click: toggleEdit "></div> 
    </li> 

    <li class="stat-container" data-bind="if: editing"> 
     <span class="stat stat-name" data-bind="text:name"></span> 
     <input class="stat stat-value"type="text" data-bind="value: value"><input type="button" value="save" data-bind="click: toggleEdit"> 
    </li> 
</ul> 

Заранее спасибо

+0

первый Телль я получаю данные в функции (данные, события) m eans в объекте «data», если да, попробуйте этот data.name() –

+0

да, я получаю. и я могу прочитать значение data.name(). он работает как шарм. спасибо –

+0

@Sagarpatel, просто добавил один вопрос в мой пост, можете ли вы предложить какой-то ответ. –

ответ

1

вместо:

this.currentPlace = function(data,event){ 
     console.log("data=>",data);   
} 

утешайте так:

this.currentPlace = function(data,event){ 
     console.log(data); 
     var name = ko.utils.unwrapObservable(data.name); 
     console.log(name); 
} 

      Or (Even better than above) 

this.currentPlace = function(){ 
     console.log(this);   
     var name = ko.utils.unwrapObservable(this.name); 
     console.log(name); 
} 
+0

выше ответ работает для меня. Я обновил свой пост еще одним вопросом. если вы можете предложить некоторые методы для получения данных. –

+0

Вы можете показать свою модель модели? и что вы подразумеваете под «чтением данных на нем», какие данные вы хотите читать и откуда? – gaurav

+0

сначала у меня есть один город foreach и снова внутри того, что у меня есть foreach для состояний. так как я могу получить доступ ко вторым данным foreach. см.