根据这里的 Knockout文档,组件viewModel只是"按需"实例化,认为它被声明如下:
考虑具有路由机制的单页应用程序的场景,例如SammyJS,Crossroads.js或任何其他.
当路由更改请求与路由模式匹配时,通常会为路由匹配事件创建路由库处理程序,以便为componentNameObservable设置新值.这将触发将新组件注入绑定元素.最重要的是,在这个路由匹配处理程序中,假设我想执行在绑定的组件viewModel内声明的函数,刷新/设置视图模型数据,响应路由更改事件.怎么可能呢?由于在这些情况下组件viewModel实例化由Knockout的内部组件绑定机制控制,我无法访问它的函数,因此我可以将它们作为要执行的回调引用.如果可能的话,我会将一个组件viewModel函数作为回调参数传递给路由库路由匹配处理程序,然后执行回调函数,一切都会很好......但似乎没有那样工作......
我正在使用CommonJS注册组件以使用Browserify,如此处所述
http://knockoutjs.com/documentation/component-loaders.html#note-integrating-with-browserify
在这种情况下,组件视图模型上的module.exports必须公开其整个非实例化的构造函数,以便无论什么require('myViewModel')被转换成,都会使视图模型在绑定时正确"新建"对元素.
有什么建议?