2015-01-12 2 views
1

После заполнения данных пользователей я хотел бы отобразить их полное имя в качестве элементов списка.Как связать значения наблюдаемых, используемых в привязке текста?

Данные связывания устанавливается следующим образом:

<ul id="availableOwners"> 
    <!-- ko foreach: OwnersList--> 
    <li data-bind="text: FirstName, click: AddOwnerToUser.bind($data), value: Id" style="cursor: pointer"></li> 
    <!-- /ko --> 
</ul> 

Я хотел, чтобы отобразить полное имя с помощью функции JavaScript:

<li data-bind="text: function() { return FirstName + ' ' + LastName }, click: AddOwnerToUser.bind($data), value: Id" style="cursor: pointer"></li> 

Однако, он отображает список определения функции буквально следующим образом:

function() { return FirstName + ' ' + LastName}
function() { return FirstName + ' ' + LastName}
function() { return FirstName + ' ' + LastName}
...

Кто-нибудь знает, как правильно отобразить полные имена в случае привязки списка этот путь?

ответ

5

Чтобы объединить несколько observables вместе, вы должны оценить их с помощью ().

Например:

<li data-bind="text: FirstName() + ' ' + LastName(), click:AddOwnerToUser.bind($data), value: Id" style="cursor:pointer"></li> 

Однако идеально, вы должны использовать computed observable вместо:

self.FullName = ko.computed(function() { 
    return self.Firstname() + ' ' + self.LastName(); 
} 
<li data-bind="text: FullName, click:AddOwnerToUser.bind($data), value: Id" style="cursor:pointer"></li> 
1

С более сложных моделей, а не более заполнения Ваше мнение/html файл, вы можете рассмотреть возможность использования вычисленного наблюдаемого:

this.FullName = ko.computed(function() { 
    return this.Firstname() + ' ' + this.LastName(); 
} 
Смежные вопросы