javascript - knockout : Access to observable Variable outside of an custom component

标签 javascript knockout.js knockout-2.0

我已经搜索了很多,但不知道如何处理我的问题。 我创建了一个自定义组件,模板位于 <script type="text/html"></script> 中标签。在这个模板之外,我有一个变量,我在做某事后尝试操作它。这不起作用,它没有定义。是否有可能操纵该可观察量?

我的代码如下所示:

HTML:

<customcomponent></customcomponent>
<script type="text/html" id="customcomponent-tpl">
    <span data-bind="text: foo">Foo</span>
    <span data-bind="text: bar">Bar</span>
</script>
<span data-bind="text: foobar">Foobar</span>

JS:

var customComponentViewModel = function() {
    this.foo = ko.observable();
    this.bar = ko.observable();
    this.foobar = ko.observable();

    this.foo('Foo!');
    this.bar('Bar!');
    this.foobar('Foo! Bar!');


    console.log(this.foo());
    console.log(this.bar());
    console.log(this.foobar());
};

// do another stuff...

/**
 * Register KO component
 */

ko.components.register('customcomponent', {
    viewModel: customComponentViewModel,
    template: {
        element: 'customcomponent-tpl'
    }
});

ko.applyBindings();

非常感谢!

马蒂亚斯

最佳答案

问题是您根本没有应用于文档的 View 模型,您只有一个组件 View 模型。

试试这个:

var vm = { foobar: ko.observable('') };
ko.applyBindings(vm);

在你的组件 View 模型中:

ko.dataFor(document.body).foobar('Foo! Bar!');

参见Fiddle

关于javascript - knockout : Access to observable Variable outside of an custom component,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26990384/

相关文章:

javascript - 允许 Googlebot 抓取动态生成的产品页面

javascript - 如何动态删除 HTML 中的空 span 元素

Knockout.js - 每页多个 ViewModel;具有不同模型上下文的页面范围的函数

javascript - 从 codeigniter Controller 获取输入值并在 knockout.js 中初始化

javascript - simpleGrid 是否需要额外下载?

javascript - 在 jQuery 函数中将客户端变量传递给 @Url.Action

javascript - Nashorn loadWithNewGlobal 功能细节

javascript - 我用于查找多个空格的正则表达式如何不匹配换行符?

javascript - Knockout JS foreach 数据绑定(bind)和嵌套元素

javascript - 使用 KnockoutJS 从 API 加载字段后,将字段添加到 observableArray