Javascript 从viewmodel到模板的组件绑定

Javascript 从viewmodel到模板的组件绑定,javascript,knockout.js,components,Javascript,Knockout.js,Components,我遇到了组件问题:模板似乎没有绑定到ViewModel中的值 这就是行动的开始 当params key==属性binding时,所有内容都显示为ok,除非我尝试使用一个不显示自身的可计算表,而其余部分将显示 function OrderItemVeiwModel(params) { var self = this; self.productName = ko.observable(params.productname); self.caseToPallet = ko.

我遇到了组件问题:模板似乎没有绑定到ViewModel中的值

这就是行动的开始


当params key==属性binding时,所有内容都显示为ok,除非我尝试使用一个不显示自身的可计算表,而其余部分将显示

function OrderItemVeiwModel(params) {
    var self = this;
    self.productName = ko.observable(params.productname);
    self.caseToPallet = ko.observable(params.casetopallet);
    self.requiredCases = ko.observable(params.requiredcases);
    self.collectedCases = ko.computed();
    self.collectedPallets = ko.observable();
    self.requiredPallets = ko.observable(function(){return this.collectedCases / this.casetoPallet;})
}; 
ko.components.register('item-widget', {veiwModel: OrderItemVeiwModel, template:{element: OrderItemTemplate}});
但计算值永远不会显示。为了查看发生了什么,我更改了所有参数键,以便ViewModel可以访问它们,但不能访问模板,并且不显示任何内容

问题是:我应该期望视图在这里绑定到veiwModel数据,还是必须以其他方式创建组件?还是我犯了一个简单的错误

还有一些我可以在javascript中使用的调试器,可以让我窥视对象值,这样我就可以自己查看这些东西了

===================================================编辑========================================
我已经看过了knockout和chromium dev utils的调试版本(比Firefox好得多),错误发生在

ko.bindingHandlers.attr.update 
当它试图打开可见光时。 所以至少我知道绑定是从模型到脉络的。我将不得不尝试用init或其他东西充实veiwModel,因为它显然不在绑定上下文中;或者手动设置绑定。谢谢你的回复,我担心我可能会被这个不正确的组件创建方法卡住,因为它看起来非常简单整洁。
ps我尝试了self、observable、non-observable、bind(this/self),只在vm中使用一个值,并且几乎所有可能的$data$组件组合都只在一个veiwmodel值上使用

很难理解您想要实现什么,但我可以看到您的组件实现存在一些问题

  • self.productName=ko.observable(params.productName)-它应该是
    self.productName=params.productName
    因为您提供的
    产品
    应该是可观察的。在AppModel中,应该像
    self.Product=ko.observable()那样定义它

  • self.collectedCases=ko.computed()-没有提供计算结果的函数的计算结果没有意义。它应该总是类似于
    self.collectedCases=ko.computed(函数(){return…;})

  • self.requiredpallelts=ko.observable(function(){return…;})
    -应该是
    ko.computed(…)
    ,而不是
    ko.observable(…)
    ,请参见我的第二点

  • function(){返回this.collectedCases/this.casetoPallet;}
    -您应该在此处使用
    self.
    而不是
    this.


  • 应使用函数作为其参数来定义计算值。您希望它显示什么?啊,对不起,我指的是需要的计算托盘。在发布之前发现问题后,我对代码做了一些处理。我正在尝试atm显示任何值atm将veiwmodels数据绑定到veiw计算,或者不尝试使用
    self
    而不是
    this
    requiredPallets
    中。此外,调用Observable(不带参数)作为函数来获取它们的值。我已经看过了knockout和chrome dev utils的调试版本(比Firefox好得多)错误发生在ko.bindingHandlers.attr.update中,当它试图打开可观察对象时,至少我知道绑定是从模型到veiw的。(有一次,我考虑了veiw和params中的所有键必须与使用params作为内部消息传递点的veiws绑定相同的可能性)好的,谢谢你的回答,我希望实现的是,我将过多的责任推到组件上,因为一些想象中的划分感,我将尝试使用appModels observable。至于其他的,是的,有点举了一个错误的例子对不起