使用实例使用敲除组件的参数

时间:2014-12-04 05:17:59

标签: knockout.js knockout-2.0 knockout-components

我想将参数发送给"实例"使用requirejs我的淘汰组件(单例)。 敲除帮助仅显示非实例参数传递的示例。

我有以下使用该实例并且工作正常的代码。

 //module declaration
 function unapAppointments()
{
      rest of code here.
}
 return {
        viewModel: {
            instance: new unapAppointments()
        },
        template: unapp,

    };

我想做的是下面从组件中传入PARAMS。但这显然不起作用。

 //module declaration
     function unapAppointments(PARAMS)
    {
          use PARAMS
    }
 return {
        viewModel: {
            instance: new unapAppointments(PARAMS)
        },
        template: unapp,

    };

由于

1 个答案:

答案 0 :(得分:2)

根据params返回一个新实例与使用shared instance视图模型相矛盾。这就像使用viewmodel作为构造函数(接受params)方法。

如果要创建单个实例,请在每次应用绑定之前根据params修改其内部,您可以使用createViewModel工厂:

define(['knockout', 'text!./unapp.html'], function(ko, unapp) {

    function unapAppointments() {
        // rest of code here.
    }

    var mySingleton = new unapAppointments();

    function unapAppointmentsFactory(params, componentInfo) {
        // modify mySingleton using params
        return mySingleton;
    }

    return {
        viewModel: {
            createViewModel: unapAppointmentsFactory
        },
        template: unapp,
    };
});

但使用这种方法很精致。如果页面中有多个组件,则最后一个组件将获胜,其参数将覆盖所有其他组件。