2014-09-19 3 views
0

я хочу, чтобы добавить идентификатор атрибута динамически тег, но он дает ошибкукомпоненты выколотки связывания ошибки атрибута

"Uncaught ReferenceError: Unable to process binding "attr: function(){return {id:id} }" Message: id is not defined"

Мой HTML-

<label data-bind="text:label"></label> 
<span class="name" data-bind="attr:{id:id},html:value"></span> 
<span class="cancelled" data-bind="html:cancel"></span> 
<span class="currency-block" data-bind="html:amount"></span> 

мой взгляд model-

this.listrows = [ 
      {layout:'basic', params:{icon:'icon-phone', items:[ 
      {item:'content', type:'basic', params:{id:'test', label:'From Account',value:'asuhdas'}} 
      ]}}, 

      {layout:'basic', params:{icon:'icon-money', items:[ 
      {item:'content', type:'basic', params:{label: 'To Account:', value:''}} 
      ]}} 
] 

Я добавил attr: {id: id} все еще свою ошибку. может кто-нибудь мне помочь в этом.

ответ

1

Не видя больше вашего HTML (поэтому предполагается, что ваш HTML содержится в foreach, какие цели listrows.item массив), свойство id содержится в вашем params объекта, поэтому для того, чтобы ссылаться на него вам потребуется указать params.id :

<span class="name" data-bind="attr: {id: params.id }, html: params.value"></span> 

Edit: на основе комментариев:

above is my full html. I just want to add id to first span...

В этом случае вам нужно получить доступ к самому виду viewmodel. Вы не можете позвонить только id, так как ваша viewmodel не имеет собственного id. Вместо этого вам нужно получить к нему доступ с помощью:

attr: { id: listrows[0].items[0].params.id } 

Это предполагает, что вы только хотите получить доступ к 0th индекс обоих listrows и items массивов.

+0

Я также считаю, что это проблема, полная квалификация ваших привязок - всегда хорошая практика. – abc123

+0

@james no still same error – user3747168

+0

@ user3747168 не могли бы вы разместить больше своего HTML? –