У меня есть два вида деятельности, как это:Нокаут связывание унаследованный JavaScript объекты
function Activity(type, name) {
this.Type = type
this.Name = ko.observable(name)
}
function MeetingActivity(name, place) {
Activity.call(this, 1500, name)
this.Place = ko.observable(place)
}
function TeachingActivity(name, place, teacherId) {
Activity.call(this, 1600, name)
this.Place = ko.observable(place)
this.TeacherId = ko.observable(teacherId)
}
и пытаются связать деятельность различных типов в какой-то контейнер, как это:
Activity:
<select data-bind='value: ActivityTypeId'>
<option value='1500'>Meeting</option>
<option value='1600'>Teaching</option>
</select>
<div data-bind='if: ActivityTypeId()==1500'>
<div data-bind='with: Activity'>
<span data-bind='text:Name'></span>
<span data-bind='text:Place'></span>
</div>
</div>
<div data-bind='if: ActivityTypeId()==1600'>
<div data-bind='with: Activity'>
<span data-bind='text:Name'></span>
<span data-bind='text:Place'></span>
<span data-bind='text:TeacherId'></span>
</div>
</div>
я написал this fiddle, чтобы получить что делать, но не повезло, что я делаю неправильно?
Да, странная ошибка: "Uncaught TypeError: Невозможно обработать привязку "значение: функция() {вернуться ActivityTypeId}" Сообщение: this.Activity не является функцией" Я проверил что this.Activity определен в поле зрения – user3222589
Как определяется 'ActivityTypeId'? –
Кажется, что ошибка в том, как Knockout обрабатывает 'if' с привязками' when'. Если вы избавитесь от 'with: Activity' и просто используйте' text: Activity(). Name/Place/TeacherId' будет хорошо. – haim770