I'm trying to get an SPA working with the following basic models:
public class Owner
{
public int OwnerId { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<TodoItem> TodoItems { get; set; }
}
public class TodoItem
{
public int TodoItemId { get; set; }
[Required]
public string Title { get; set; }
public bool IsDone { get; set; }
public int OwnerId { get; private set; }
public virtual Owner Owner { get; set; }
public virtual ICollection<ActionItem> ActionItems { get; set; }
}
public class ActionItem
{
public int Id { get; set; }
public string Name { get; set; }
public int TodoItemId { get; private set; }
public virtual TodoItem TodoItem { get; private set; }
}
and in my view I tried this:
<div data-bind="foreach: ActionItem">
<div data-bind="attr:{id:Id}">
<span data-bind="text: Name"></span><br /> <!-- works -->
<span data-bind="text: TodoItem().Name"></span><br /> <!-- doesn't work -->
<span data-bind="text: TodoItem().Owner().Name"></span> <br /> <!-- doesn't work -->
</div>
</div>
I also tried adding a computed property to ActionItem containing the owner name:
public string OwnerName
{
get { return this.TodoItem.Owner.Name; }
}
and calling:
<span data-bind="text: OwnerName"></span><br /> <!-- doesn't work -->
but if I add a different static string and set the value manually:
public string SomethingElse { get; set; }
then this works fine:
<span data-bind="text: SomethingElse"></span><br /> <!-- works -->
What am I doing wrong?
Cheers