编辑:这只出现在Chrome之外
我使用KO来使用foreach绑定来填充元素。在硬币的另一边,我已经加载了聚合物,以利用谷歌的材料设计风格。
问题是,在platform.js文件(聚合物)中似乎有一个断言试图接管data-bind,即使聚合物没有使用数据绑定属性。
想知道是否有人有使用这两种方法的经验,或者有什么建议?错误如下:
Error: Unable to process binding "template: function (){return { foreach:sessions} }" Message: Assertion failed
JSFiddle:http://jsfiddle.net/Rmp6c/3/
编辑:我已经设置了调试版本,第31行的ShadowDOM/src/wrappers.js中似乎有一个assert(b)函数正在传递一个布尔值。这被一个Node.js文件称为100次,要解决这个问题,需要进行相当大的重写。
我的修复方法是使用jQuery插入带有foreach绑定的DOM元素,然后在$(document).ready(function() {});标记中应用KO绑定。这似乎适用于所有浏览器。
发布于 2014-08-29 09:27:19
我的修复方法是使用jQuery插入带有foreach绑定的DOM元素,然后在$(document).ready(function() {});标记中应用KO绑定。这似乎适用于所有浏览器。
虽然这不是一个很好的解决办法--这是唯一一个正常工作的方法。我已经联系了KnockoutJS的Sanderson,相信他正在调查此事。我之所以只使用Knockout自定义组件来修复这个问题,是因为聚合物组件按照谷歌的新设计规范提供了材料设计,而我正在构建的网络前端与我公司的移动应用程序有着内在的联系,所以我想保持一个连贯的设计。
发布于 2014-12-01 16:01:18
如果有人有此问题,这是因为您使用的是ko.applyBindings(viewModel)方法,而在这里,淘汰赛使用window.document.body获取节点,而后者又忽略了webcomponents.js使用的shadowDOM填充。
为了解决这个问题,您有两个选项,使用应用绑定方法的第二个重载--您可能会以这种方式获得一个成功包装的节点。
或者,您可以在淘汰赛声明之后立即加载这个垫片(一些从knockout.validation借来的样板:
(function (factory) {
// Module systems magic dance.
if (typeof require === "function" && typeof module === "object") {
// CommonJS or Node: hard-coded dependency on "knockout"
factory(require("knockout"));
} else if (typeof define === "function" && define["amd"]) {
// AMD anonymous module with hard-coded dependency on "knockout"
define(["knockout"], factory);
} else {
// <script> tag: use the global `ko` object, attaching a `mapping` property
factory(ko);
}
}(function (ko) {
if (typeof (ko) === undefined) { throw 'Knockout is required, please ensure it is loaded before loading this shim'; }
if (WebComponents && WebComponents.flags.shadow && ShadowDOMPolyfill) {
var _originalApplyBindings = ko.applyBindings;
ko.applyBindings = function (viewModel, rootNode) {
if (rootNode) {
rootNode = ShadowDOMPolyfill.wrapIfNeeded(rootNode);
} else {
rootNode = ShadowDOMPolyfill.wrapIfNeeded(window.document.body);
}
_originalApplyBindings(viewModel, rootNode);
}
}
}));希望这能帮助任何有同样问题的人。
https://stackoverflow.com/questions/24780854
复制相似问题