Javascript 组件参数未更新

Javascript 组件参数未更新,javascript,knockout.js,Javascript,Knockout.js,出于某种原因,我的组件中的参数似乎没有改变。这个问题可以解决,如果我订阅了可观察的,但我觉得其他东西一定出了问题,我无法找出它 我在自己的文件中有模板和视图模型 以下是我的视图模型: function model(params){ var viewModel = {}; viewModel.foo = ko.observable(); params.value.subscribe(function(data){ viewModel.foo(data);

出于某种原因,我的组件中的参数似乎没有改变。这个问题可以解决,如果我订阅了可观察的,但我觉得其他东西一定出了问题,我无法找出它

我在自己的文件中有模板和视图模型

以下是我的视图模型:

function model(params){
    var viewModel = {};
    viewModel.foo = ko.observable();
    params.value.subscribe(function(data){
        viewModel.foo(data);
    });
    return viewModel;
}
这是我的模板:

function template(){
    var template =`<div data-bind="text: foo></div>`;
    return template;
}
这里是我在HTML中使用它的地方。Foo将是主视图模型中可观察的对象

<foo-template params="value: foo"></foo-template>


如果我订阅了
params.value
,一切都正常,但我觉得我不需要使用它

我认为问题在于您试图将数据绑定到div。div通常不支持可写文本,并且文本绑定对它们不起作用。如果将模板中的div替换为标准的输入文本框,那么一切似乎都能按预期工作

ko.components.register('foo-template'{
viewModel:{createViewModel:model},
模板:模板()
});
函数模型(params){
var viewModel={};
viewModel.foo=params.value;
//viewModel.foo=ko.可观察(“内部值”);
返回视图模型;
}
函数模板(){
var template=`内部foo:`;
返回模板;
}
应用绑定({foo:ko.observable('test')})


外部foo:
您将向参数传递什么?你能在html中显示你在哪里使用该组件吗?我编辑了我的问题,把它放在html中的位置。看起来你使用传入值的唯一位置是在该订阅中。如果要避免订阅,则可能需要使用“viewModel.foo=params.value”。那是你以前试过的吗?没用?对。如果我去掉订阅,当我改变参数时,什么都不会更新。嗯,这真的很奇怪,因为这对我不起作用。我的项目中肯定还有别的事情。这很奇怪,因为同样的事情正在另一个项目中发生。
<foo-template params="value: foo"></foo-template>