我的应用程序使用它并且$item
下的Knockout 3.4.0
字段存在问题。我需要访问parentList
,它存储被拖动到另一个列表的项目的原始父元素。
以下代码不会与最新版本的Knockout一起运行,jQuery模板是其依赖项之一。我正在寻找原因,解决方案或解决方法。
JSFiddle详细示例:http://jsfiddle.net/piglin/UAcC7/1837/
Uncaught ReferenceError: Unable to process binding "template: function (){return { name:'rowTmpl',foreach:$data.children,templateOptions:{ parentList:$data.children}} }"
Message: Unable to process binding "template: function (){return { name:'cellTmpl',foreach:$data.children,templateOptions:{ parentList:$data.children}} }"
Message: Unable to process binding "sortableItem: function (){return { item:$data,parentList:$item.parentList} }"
Message: $item is not defined
ko.bindingHandlers.sortableList = {};
ko.bindingHandlers.sortableItem = {
init: function(element, valueAccessor) {
var options = valueAccessor();
}
};
var viewModel = function() {
var self = this;
self.children = ko.observableArray(
[{}]
);
};
ko.applyBindings(new viewModel());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.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-min.js"></script>
<div data-bind="template: { name: 'tmpl', foreach: $data.children, templateOptions: { parentList: $data.children } }">
</div>
<script id="tmpl" type="text/html">
<div data-bind="sortableItem: { item: $data, parentList: $item.parentList }">
</div>
</script>
答案 0 :(得分:2)
似乎您的模板名称是“cellTmpl”,但在绑定中您称为名称:'tmpl'
答案 1 :(得分:0)
真正的问题是,在将HTML文档附加到我的Knockout JS页面时,jQuery templates
插件未加载。
我已正确配置RequireJS并且它似乎是Knockout生命周期的问题,我需要在jQuery templates
阶段加载activate
依赖项,我正在编写代码示例来实现此目的。