Knockout.js 为什么在传递到组件中时,此可观察对象会成为计算/依赖对象?
我有一个简单的模型,上面有一个可观察的(“model.thing”)。然后,我在此(“someProp”)上设置了一个额外的observable,并将其传递到组件的参数中Knockout.js 为什么在传递到组件中时,此可观察对象会成为计算/依赖对象?,knockout.js,knockout-3.2,Knockout.js,Knockout 3.2,我有一个简单的模型,上面有一个可观察的(“model.thing”)。然后,我在此(“someProp”)上设置了一个额外的observable,并将其传递到组件的参数中 model.thing = ko.observable({}); model.thing.someProp = ko.observable("Yolo"); 在这一点上,可观测的已经变成了计算的,我不知道为什么 如果我改变模型,而不是把model.thing作为一个可观察的对象,我把它作为一个简单的对象,然后把它传递进来,它
model.thing = ko.observable({});
model.thing.someProp = ko.observable("Yolo");
在这一点上,可观测的已经变成了计算的,我不知道为什么
如果我改变模型,而不是把model.thing
作为一个可观察的对象,我把它作为一个简单的对象,然后把它传递进来,它就通过了,而没有变成一个计算的
有人对这种行为有什么解释吗
下面是一个工作示例(它向param发出警报,表明它已成为计算对象)
var viewModel=function(){
var模型={};
model.thing=ko.observable({});//当事物是可观察的
//model.thing={};
model.thing.someProp=ko.可观察(“Yolo”);
收益模型;
};
ko.components.register('自定义元素'{
viewModel:函数(参数){
this.value=params.value;
警报(this.value);//那么这是依赖的,为什么?!
},
模板:
''
});
应用绑定(视图模型)代码>
敲除元件
多亏了涅梅斯夫,他给我指出了原因
使用自定义元素语法时提供的params对象将
还包括$raw属性(除非参数恰好提供了
属性),该属性允许访问
返回原始值(而不是未包装的值)
例如:
在这种情况下,由于selectedItem被访问,所以参数作为
计算的。访问计算出的值时,将显示展开的值
返回以避免必须双重展开参数才能获取其值。
但是,您可能希望访问在这种情况下可观察到的值,
而不是它的展开值。在组件中,这可能是
通过访问参数$raw.value()
实现。默认功能
倾向于易于使用(无需打开参数两次)
同时为高级案例提供$raw
请参阅:如何将参数传递给组件以解释此行为。我明白了,谢谢,因此为了解决此问题(设置值),我需要使用参数$raw.value();非常感谢。
<my-component params="value: selectedItem().value"></my-component>