2

我正在尝试创建一个淘汰赛组件并从如下文件加载其模板:

function ordersViewModel(){
   //whatever
}

function equipmentViewModel(){
   //whatever
}

ko.components.register('compact-view', {
    viewModel: ordersViewModel,
    template: {require: '../views/orders/compactTable.html'},
    synchronous: true
});

var MasterModel = function(){
    this.orders = new ordersViewModel(),
    this.equipment = new equipmentViewModel();
};

var mm = new MasterModel();

我收到以下错误:

加载资源失败:服务器响应状态为 404(未找到) https://localhost/views/orders/compactTable.html.js

似乎它正在寻找文档中详述的 .js :

为此,文件files/component-like-widget.jsfiles/component-like-widget.html需要存在。

有没有办法使用组件而不必在另一个文件中分离视图模型?

我正在使用 MasterModel 能够从任何其他视图模型调用其他视图模型函数,并且可能将它们分开ordersViewModel在另一个文件中会使事情变得更加困难。

4

2 回答 2

3

完全可以这样做,您可以分别指定组件的视图模型和模板。

在您的情况下,问题是您text!在模板路径之前丢失了,因此 RequireJs 尝试将其作为 javascript 资源加载。

此外,您需要包含 RequireJs 文本插件:https ://github.com/requirejs/text

于 2015-08-12T11:14:05.547 回答
0
//Component with no viewmodel
namespace Components {

export namespace NoViewModelComponent{

    export const componentName = 'no-viewmodel-component';

   //No Viewmodel as is taken care of elsewhere
    (function register() {
        ko.components.register(componentName, {
            template: {
             //using require
              require: 'text!' + BASE_URL + 'Views/Components/NoViewModelView.html'
             //OR direct html
             //'<div > {{My Var}}</div>'
            }

        });
    })();
  }    
}
于 2016-09-01T02:57:45.327 回答