2013-02-26 4 views
1

Я следующий фрагмент HTML:Выбор knockout.js пользовательского контента в observableArray в Еогеасп

<tbody data-bind="foreach: ptData"> 
      <tr id="Tr1"> 
       <td><a data-bind="attr: {href: '/ProjectTrack/IssueGrid.aspx?IssueID='+ptId}">PT Launch</a></td> 
       <td nowrap="nowrap" data-bind="text: ptId"> 
       </td> 
       <td nowrap="nowrap" data-bind="text: ptProject"> 
       </td> 
       <td nowrap="nowrap" data-bind="text: ptTitle"> 
       </td> 
       <td nowrap="nowrap" data-bind="text: ptPriority"> 
       </td> 
       <td nowrap="nowrap" data-bind="text: ptType"> 
       </td> 
       <td nowrap="nowrap" data-bind="text: ptStatus"> 
       </td> 
       <td nowrap="nowrap" data-bind="text: ptUpdated"> 
       </td> 
       <td nowrap="nowrap" data-bind="text: ptAssignedTo"> 
       </td> 
       <td style="display: none" data-bind="text: ptUrl"> 
       </td> 
      </tr> 
     </tbody> 

У меня есть следующие ViewModel с динамическим содержимым толкнул к нему:

var viewModel = { 
     ptData: ko.observableArray([]) 
    }; 



function DataResult(ptId, ptProject, ptTitle, ptPriority, ptType, ptStatus, ptUpdated, ptAssignedTo, ptDesc, ptUrl) { 
     this.ptId = ko.observable(ptId); 
     this.ptProject = ko.observable(ptProject); 
     this.ptTitle = ko.observable(ptTitle); 
     this.ptPriority = ko.observable(ptPriority); 
     this.ptType = ko.observable(ptType); 
     this.ptStatus = ko.observable(ptStatus); 
     this.ptUpdated = ko.observable(ptUpdated); 
     this.ptAssignedTo = ko.observable(ptAssignedTo); 
     this.ptDesc = ko.observable(ptDesc); 
     this.ptUrl = ko.observable(ptUrl); 
    } 

У меня есть jQuery ajax вызов для возврата данных, которые заполняются в объекте DataResult, и каждый объект DataResult помещается в viewModel.ptData. Следующая knockout.js команда не похоже на работу в HTML фрагмент кода:

"attr: {href: '/ProjectTrack/IssueGrid.aspx?IssueID='+ptId". 

Что именно я делаю не так?

+0

Кажется, вы могли бы опубликовать это в скрипке. – nav0611

ответ

0

Если вы хотите привязать к выражению (здесь вы строите ссылку с +), где у вас есть наблюдаемые свойства (ptId), вы должны вызывать их как функции. Таким образом, вам не хватает ()

<a data-bind="attr: {href: '/ProjectTrack/IssueGrid.aspx?IssueID=' + ptId() }"> 

Однако, если вы можете создать вычисляемый obseravable генерировать ссылку:

function DataResult(ptId, ....) {   
     this.ptId = ko.observable(ptId); 
     this.launchLink = ko.computed(function(){ 
      return '/ProjectTrack/IssueGrid.aspx?IssueID=' + this.ptId() 
     }, this); 
} 

Тогда вам не понадобится () в вашем связывании, потому что теперь вы непосредственно связываются к наблюдаемому:

<a data-bind="attr: { href: launchLink }"> 
+0

Yup, который сделал это. Я не совсем понял, как правильно привязываться. Спасибо за помощь. – maegus

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