在带有MVC + Web API后端的Durandal应用程序中,我有以下public class ProductFilter
{
public string Name { get; set; }
public List<ProductFilter> DependentFilters { get; set; }
}
类:
filter.js
我有一个我希望映射到此类的前端实例模型define(["models/filter"], function (filter) {
return function (data) {
var self = this;
data = data || {};
self.name = ko.observable(ko.unwrap(data.name || ""));
self.dependentFilters = ko.observableArray();
$.each(ko.unwrap(data.dependentFilters || []), function () {
// ---> 'filter' is undefined, so I cannot call new filter(..)
self.dependentFilters.push(new filter(this));
});
};
});
。它目前看起来像这样:
C#
正如您所看到的,filter.js
类有一个自己类型的集合,我需要在Durandal模型上复制该结构。在上面的示例中,我尝试将RequireJs
模块注入其自身,但filter
似乎不喜欢这样,因为undefined
变量始终为RequireJs
。
我的问题可能源于缺少AMD
或SELECT split_part(col, '/', 2) AS result
FROM tbl;
模块知识,但我怎样才能实际调用当前模块的构造函数呢?
答案 0 :(得分:2)
定义函数以使其具有名称,并从其自身调用它。然后,您可以通过名称引用该函数来返回该函数:
define(function () {
function filter (data) {
// ... same as in your question ...
$.each(ko.unwrap(data.dependentFilters || []), function () {
self.dependentFilters.push(new filter(this));
});
};
return filter;
});