knockoutjs - 计算的Attr传递参数不起作用

时间:2013-05-29 14:57:46

标签: knockout.js knockout-2.0

我有一个应用程序,我有一个模板,我将用于表单输入。

由于页面上会有多个版本的相同输入/标签,因此无法对输入ID进行硬编码。

相反,我已经构建了一个函数,我将用它来绑定attr('id'表示输入,'for'表示标签)。

这在Chrome和IE9中运行良好,但在IE8& IE7。

我有一个标签&输入:

<label data-bind="attr: {for: doId('name_first')}">First Name*</label>
<input type="text" name="name-first" data-bind="value: name_first, attr: {id: doId('name_first')}" />

我的淘汰代码:

function MyViewModel() {
    var self = this;

    self.person_id = ko.observable('1234');
    self.name_first = ko.observable();

    self.doId = function(seed){
        return seed + "-" + self.person_id();
    };
}

ko.applyBindings(new MyViewModel());

JsFiddle似乎在IE8中不起作用,所以这里是jsbin

有没有人经历过这个并有一个解决方法?

使用输入/标签重复模板HAS是一个常见问题。

- 斯科特

1 个答案:

答案 0 :(得分:0)

for是JavaScript中的保留关键字,可能会导致IE中出现问题&lt; 9用作属性名称时。解决方案是在for附近加上引号,如:

attr: { 'for': doId('name_first') }