【发布时间】:2016-04-20 20:58:47
【问题描述】:
我有一个使用嵌套 pagination 组件的 Knockout.js 组件,如下所示:
TypeScript 代码
import ko = require("knockout");
class NetworkListViewModel {
arrayValue = ko.observableArray<string>();
currentPage = ko.observable<number>(0);
totalItemCount = ko.observable<number>(0);
constructor(params) {
this.arrayValue = params.value
this.currentPage(1);
this.totalItemCount(params.totalItemCount);
}
}
ko.components.register("network-list", {
viewModel: NetworkListViewModel,
template: { require: "text!components/network-list/network-list.html" }
});
HTML 视图
<div class="network-list" >
<pagination params="CurrentPage: CurrentPage, TotalItemCount: TotalItemCount()"></pagination>
</div>
我已经尝试添加一个脚本以这种方式在 RequireJs 中注册它:
HTML 视图
<div class="network-list" >
<pagination params="CurrentPage: CurrentPage, TotalItemCount: TotalItemCount()"></pagination>
</div>
<script>
require(["components/pagination/pagination"]);
</script>
但它不起作用。
在主视图 (index.cshtml) 中注册这些依赖项就可以了。
<div id="bindingSection">
<network-list params="value: data, totalItemCount: totalItemCount()"> </network-list>
</div>
@section Scripts {
<script>
require(['pages/home',
"components/network-list/network-list",
"components/pagination/pagination"
]);
</script>
}
这样做意味着开发人员必须知道每个组件的所有子依赖项(在大型项目中并不简单)。 如何指示 RequireJs 管理这个嵌套组件?有没有办法将导入责任转移到子组件?
【问题讨论】:
-
我不确定,但应该这样:
import ko = require("knockout");不是这样:var ko = require("knockout");? -
他可能正在使用 TypeScript 或 ES6 - 这就是我的 require 语句的样子
标签: javascript c# knockout.js typescript requirejs