我想将div添加到div中,与knockout中可观察数组的第一个值相同

时间:2014-07-13 09:39:00

标签: knockout.js

我想根据第一个颜色名称添加id。但它没有按我的意愿添加,它给出了javascript错误: 未捕获错误:无法解析绑定。 消息:TypeError:undefined不是函数; 绑定值:attr:{id:$ root.colors()[0] .color} 我试过的代码示例。 HTML:

<ul data-bind="foreach: colors">
    <li><span data-bind="text:color"></span>
    </li>
</ul>
<div data-bind="attr: {id: $root.colors()[0].color}">
    Make this div id associated with first color name of colors array.
</div>

淘汰赛:

var ViewModel = function() {
    this.self = this;
    self.colors = ko.observableArray([{
        color: 'red'},
    {
        color: 'blue'},
    {
        color: 'yellow'}]);
};
ko.applyBindings(new ViewModel());

1 个答案:

答案 0 :(得分:1)

您的视图模型中存在错误 - 您在对象self上创建了this.self = this属性,但随后您将其用作本地变量。尝试将其更改为局部变量:

var ViewModel = function() {
    var self = this;
    self.colors = ko.observableArray([{
        color: 'red'},
    {
        color: 'blue'},
    {
        color: 'yellow'}]);
};
ko.applyBindings(new ViewModel());