Knockout映射不允许我访问属性

时间:2011-01-13 15:34:54

标签: javascript knockout.js

出于演示目的,我正在编写一个项目跟踪应用程序。项目包含任务,人员等,每个项目都有标题和描述等相关属性。

我创建了一个选择列表,并希望用每个项目的标题属性填充它。相反,它正在填充函数的文本。我认为这是因为标题是可观察的。但我不知道我怎么能要求价值...

以下是未正确填充的HTML:

<select data-bind="options: projects, 
    optionsText: 'title', 
    optionsValue: 'id', 
    value: selectedList.id()">
</select>

这是包含json的javascript(它是在ASP.Net MVC中使用JSON.Net注入的)。格式应该是相同的,虽然我试图对它进行消毒,所以请原谅任何缺失的括号。

<script type="text/javascript">
    var initialData = [
    {
        "id": "2150980c-1033-4b20-a58b-9e5400abb651",
        "title": "project1",
        "description": "project 1 description",
        "persons": [
        {
            "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
            "firstname": "p1_fname"
        },
        {
            "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
            "firstname": "p1_fname"
        }],
        "tasks": [
        {
            "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
            "title": "task1"
        },
        {
            "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
            "title": "task2"
        }]
    },
    {
        "id": "54d4dc7c-0928-4c05-93a2-9e5400abb6a0",
        "title": "project2",
        "description": "project 2 description",
        "persons": [
        {
            "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
            "firstname": "p1_fname"
        },
        {
            "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a",
            "firstname": "p1_fname"
        }],
        "tasks": []
    }
    ];

    var viewModel = {
        projects: ko.mapping.fromJS(initialData)
    };

    viewModel.selectedList = {
        id: ko.observable("")
    };

    if(viewModel.projects().length > 0)
        viewModel.selectedList.id(viewModel.projects()[0].id());

    ko.applyBindings(viewModel);

</script>

修改

格林是对的。代码很好。我没有提供足够的信息。我使用Knockout 1.1.1和映射插件0.5。这就是造成这个问题的原因。 Knockout目前在v1.1.2上。当我升级到1.1.2时,它起作用了。好抓绿色。我应该先用小提琴检查一下。

注意:目前没有任何文档表明需要使用1.1.2。

1 个答案:

答案 0 :(得分:1)

我没有看到代码的问题。小提示显示选择正确填充了项目标题:http://jsfiddle.net/greenlaw110/Tkqqb/3/