1

我想使用 requirejs 将参数发送到我的淘汰赛组件的“实例”(单例)。淘汰赛帮助仅显示非实例参数传递的示例。

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

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

    };

我想做的是像下面这样从组件传入参数。然而这显然是行不通的。

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

    };

谢谢

4

1 回答 1

3

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

如果要创建单个实例,每次在应用绑定之前根据参数修改其内部,您可以使用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,
    };
});

但是使用这种方法很微妙。如果页面中有多个组件,最后一个绑定的获胜,它的参数将覆盖所有其他的。

于 2014-12-04T10:55:20.810 回答