在root-viewModel的sub-viewModel中定义的knockoutjs调用函数

Grajsek

我有一个具有结构的单页应用程序:

  • ViewModel-RootVM(页面页眉,页脚,常用功能,...):
    • SubModelA(第1页-模板)
    • SubModelB(第2页-模板)

我想从页眉(ViewModel-RootVM)调用第2页(SubModelB)上定义的函数fnTest。如何从ViewModel和HTML中做到这一点?这有可能吗?如果是这样,请帮我举个例子。我在这里有点迷路了。

我正在使用Knockout.js v2.2.1和jQuery v1.9.1

ViewModel(您可以在jsfiddle中查看其余代码,请点击下面的链接)

var View = function(title, templateName, data) {
        var self = this;


    self.title = title;
    self.templateName = templateName;
    self.data = data;

    self.myPostProcessingLogic = function(element1, index1, data1) {
        console.log('post processing');
    };
};

var SubModelA = function(root) {
    var self = this;

    self.items = ko.observableArray([
        { id: 1, name: "one" },
        { id: 2, name: "two" },
        { id: 3, name: "three" }
      ]);
};

var SubModelB = function(root) {
    var self = this;

    self.firstName = ko.observable("Bob");
    self.lastName = ko.observable("Smith");

    self.fnTest = function() {
        alert('calling function from subModelB');
    };

    self.fnSubModelB = function() {
        root.allert('calling function allert from root');
    };
};

var ViewModel = function() {
    var self = this;

    self.views = ko.observableArray([
        new View("one", "oneTmpl", new SubModelA(self)),
        new View("two", "twoTmpl", new SubModelB(self))
        ]);

    // default open page 'two'
    self.selectedView = ko.observable(self.views()[1]);

    self.allert = function() {
        alert('alert from rootVM');
    };

    self.allert2 = function() {
        // how can I call function 'fnTest' which is defined in SubModelB
        self.views()[1].fnTest(); // this is not working
    };
};

var viewModel = new ViewModel();
ko.applyBindings(viewModel);

链接到jsfiddle

梅尔

这不起作用,因为fnTest()不在“视图”中声明,而是在其“数据”中声明。它可以使用:

self.views()[1].data.fnTest()

看到这里:http : //jsfiddle.net/LJBqp/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 KnockoutJS ViewModel 上定义一个函数

来自分类Dev

KnockoutJS中的ViewModel之间的通信

来自分类Dev

KnockoutJS中的ViewModel之间的通信

来自分类Dev

如何在bindingHandler中从ViewModel调用函数

来自分类Dev

从外部ViewModel调用Knockout函数

来自分类Dev

对Ko ViewModel的函数响应调用

来自分类Dev

在Knockoutjs中的ViewModel之间共享变量状态

来自分类Dev

KnockOutJS中的ViewModel可访问性

来自分类Dev

淘汰赛JS在foreach绑定中调用ViewModel函数

来自分类Dev

为什么我在 viewModel 中的函数在文档就绪时被调用?

来自分类Dev

使用自定义绑定KnockoutJS更新ViewModel

来自分类Dev

KnockoutJS:如何避免在applyBindings上运行viewmodel函数?

来自分类Dev

从KnockoutJS viewModel获取值,然后在另一个viewModel上调用它?

来自分类Dev

调用函数update()时ViewModel不更新

来自分类Dev

将KnockoutJS导入要测试的ViewModel中时,为什么超过最大调用堆栈大小的Jest错误?

来自分类Dev

KnockoutJS失去了ViewModel

来自分类Dev

在ViewModel上的Knockoutjs绑定输入

来自分类Dev

KnockoutJS失去了ViewModel

来自分类Dev

在ViewModel中未调用方法-MVVMCross

来自分类Dev

XAML ExtendedPicker - 在 ViewModel 中调用代码

来自分类Dev

在ViewModel的DataTemplate中定义的DataGrid的DataGridColumnHeader

来自分类Dev

在ViewModel的DataTemplate中定义的DataGrid的DataGridColumnHeader

来自分类Dev

从ViewModel调用通用方法

来自分类Dev

ViewModel 每次都被调用

来自分类Dev

敲除VIewModel在foreach中触发函数

来自分类Dev

敲除VIewModel在foreach中触发函数

来自分类Dev

在 Sub 中调用 Myrange 函数

来自分类Dev

如何通过ViewModel在自定义控件上调用方法

来自分类Dev

如何从其视图调用我的viewmodel函数-viewmodel的子项(knockout.js)

Related 相关文章

  1. 1

    在 KnockoutJS ViewModel 上定义一个函数

  2. 2

    KnockoutJS中的ViewModel之间的通信

  3. 3

    KnockoutJS中的ViewModel之间的通信

  4. 4

    如何在bindingHandler中从ViewModel调用函数

  5. 5

    从外部ViewModel调用Knockout函数

  6. 6

    对Ko ViewModel的函数响应调用

  7. 7

    在Knockoutjs中的ViewModel之间共享变量状态

  8. 8

    KnockOutJS中的ViewModel可访问性

  9. 9

    淘汰赛JS在foreach绑定中调用ViewModel函数

  10. 10

    为什么我在 viewModel 中的函数在文档就绪时被调用?

  11. 11

    使用自定义绑定KnockoutJS更新ViewModel

  12. 12

    KnockoutJS:如何避免在applyBindings上运行viewmodel函数?

  13. 13

    从KnockoutJS viewModel获取值,然后在另一个viewModel上调用它?

  14. 14

    调用函数update()时ViewModel不更新

  15. 15

    将KnockoutJS导入要测试的ViewModel中时,为什么超过最大调用堆栈大小的Jest错误?

  16. 16

    KnockoutJS失去了ViewModel

  17. 17

    在ViewModel上的Knockoutjs绑定输入

  18. 18

    KnockoutJS失去了ViewModel

  19. 19

    在ViewModel中未调用方法-MVVMCross

  20. 20

    XAML ExtendedPicker - 在 ViewModel 中调用代码

  21. 21

    在ViewModel的DataTemplate中定义的DataGrid的DataGridColumnHeader

  22. 22

    在ViewModel的DataTemplate中定义的DataGrid的DataGridColumnHeader

  23. 23

    从ViewModel调用通用方法

  24. 24

    ViewModel 每次都被调用

  25. 25

    敲除VIewModel在foreach中触发函数

  26. 26

    敲除VIewModel在foreach中触发函数

  27. 27

    在 Sub 中调用 Myrange 函数

  28. 28

    如何通过ViewModel在自定义控件上调用方法

  29. 29

    如何从其视图调用我的viewmodel函数-viewmodel的子项(knockout.js)

热门标签

归档