与AMD的淘汰组件

时间:2015-07-01 10:03:52

标签: javascript knockout.js requirejs

我在knockout中创建了一个组件并使用RequireJs调用它,然后我尝试将该组件作为独立组件并从我的视图中删除该模板,并为该模板创建一个单独的HTML文件。 这是注册组件的代码

@Scripts.Render("~/bundles/Knockout")
<script src="~/boot/require.config.js"></script>
<script src="~/Scripts/require.js"></script>


<script>
    var dashBoarViewModel = ko.mapping.fromJS(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)));
    ko.components.register('user-details', {
        require: '../koModules/UserdashBoard/Proworldz.dashBoardHeader.js'
    });
    ko.applyBindings(dashBoarViewModel);
</script>

在我的require.config.js文件中,我创建了一个require对象,该对象提供了RequirJs加载HTML模板所需的依赖text.js文件。 这就是它的样子 -

    var require = {
        baseUrl: "/",
     paths: {
    "text": "Scripts/text"
             }
         }

这是Proworldz.dashBoardHeader.js组件的外观 -

         define(['text!module/Proworldz.dashBoardHeaderTemplate.html'],function(temp) {
               function MyComponentViewModel(params) {
               this.UserItem = params;
        }

         return {
            viewModel: MyComponentViewModel,
            template: temp 
}
});

如果我尝试删除此配置文件并直接调用text.js文件,就像这样

      @Scripts.Render("~/bundles/Knockout")
<script src="~/Scripts/text.js"></script>
<script src="~/Scripts/require.js"></script>


<script>
    var dashBoarViewModel = ko.mapping.fromJS(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)));
    ko.components.register('user-details', {
        require: '../koModules/UserdashBoard/Proworldz.dashBoardHeader.js'
    });
    ko.applyBindings(dashBoarViewModel);
</script>

未调用模板并发出错误

未捕获错误:脚本错误:文本           http://requirejs.org/docs/errors.html#scripterrormakeError @ require.js:166context.onScriptError @ require.js:1701           require.js:166 Uncaught Error:加载模块的超时:text!../ koModules / UserdashBoard / Proworldz.dashBoardHeaderTemplate.html_unnormalized2

是否必须创建require对象并调用text.js文件?我不能直接加载text.js文件吗?

0 个答案:

没有答案