1

我的应用程序有一个绑定,它使用jQuery Templates插件绑定 Knockout 模板。自从升级到 Knockout3.x我开始看到一个错误:

Uncaught SyntaxError: Unable to process binding "template: function (){return { name:'tmpl',foreach:$data.children} }"
Message: Unexpected token )

升级到 Knockout 版本后,上述错误不允许我的绑定工作。3.x(例如3.4.0)。对于旧版本(例如2.1.0),它可以正常工作。

该错误可能是由于与jQuery Templates插件的某些冲突引起的。不幸的是,我必须在我的应用程序中使用它。

可能是什么原因和解决方案?

var viewModel = function() {
  var self = this;
  self.children = ko.observableArray(
    [{}]
  );
};
ko.applyBindings(new viewModel());
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script src="https://rniemeyer.github.com/KnockMeOut/Scripts/jquery.tmpl.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-debug.js"></script>

<div data-bind="template: { name: 'tmpl', foreach: $data.children }">
</div>

<script id="tmpl" type="text/html">
  <div data-bind="template: { name: 'tmpl', foreach: $data.children, templateOptions: { parentList: $data.children } }">
  </div>
</script>

4

1 回答 1

0

摆脱空数组中的空对象。无论如何,把它放在那里是没有意义的。

var viewModel = function() {
  var self = this;
  self.children = ko.observableArray([]);
};
ko.applyBindings(new viewModel());
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script src="https://rniemeyer.github.com/KnockMeOut/Scripts/jquery.tmpl.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-debug.js"></script>

<div data-bind="template: { name: 'tmpl', foreach: $data.children }">
</div>

<script id="tmpl" type="text/html">
  <div data-bind="template: { name: 'tmpl', foreach: $data.children, templateOptions: { parentList: $data.children } }">
  </div>
</script>

于 2016-01-22T20:29:15.087 回答