【问题标题】:Click event in Knockout.jsKnockout.js 中的单击事件
【发布时间】:2017-04-09 02:05:21
【问题描述】:

是否可以在模型内部有点击事件并从下面的不同视图调用它是我的代码,它有 2 个视图使用相同的 studenviewModel,现在我想要模型内部的点击事件需要帮助,如果我在里面使用点击事件studentViewModel 它可以工作,但在 classModel 内部它不工作

function studentViewModel()
{
     self.studentDetails=ko.observaleArray([]);
    sum function to call ajax method
}

function classModel(data)
{
   get bind to class 

    self.getClassdetails=function()
     {
      }
}

 <div id="view1" data-role="view" class="student">

 <div>
  <div id="view2" data-role="view" class="student">
   <button data-bind="getClassdetails"><button>
  <div>

   ko.applybinding(new studentViewModel(),documentgetelementByClassName("student"))

【问题讨论】:

  • 您可能正在寻找淘汰赛邮箱插件。您正在使用 Knockout V2.x?
  • 是的,我正在使用 Knockout 3.3.0 v
  • 那你为什么要在你的问题中添加knockout-2.0
  • @connex 对不起,我没听懂你,所以有没有可能在模型中获得点击功能
  • 您只能在属于它的视图内调用视图模型的函数。在该视图之外,除非它是父视图模型,否则该功能将不可用。要在没有嵌套关系的两个不同视图模型之间进行交互,您可以使用 messenger-subscriber 模式,例如使用 knockout-postbox 插件。

标签: knockout.js knockout-mapping-plugin


【解决方案1】:

我正在做一个粗略的伪解决方案来说明这个想法。您可以清理语法并改善类之间的依赖关系。这个想法是在你的模型中表达 viewa 的依赖关系:

function studentViewModel()
{
   --> self.classStudentBelongsTo = ... somehow inject this or new it here
   self.studentDetails=ko.observaleArray([]);
   sum function to call ajax method
}

function classModel(data)
{
   get bind to class 

    self.getClassdetails=function()
     {
      }
}

 <div id="view1" data-role="view" class="student">

 <div>
  <div id="view2" data-role="view" class="student">
   <button data-bind="--> classStudentBelongsTo.getClassdetails"><button>
  <div>

   ko.applybinding(new studentViewModel(),documentgetelementByClassName("student"))

【讨论】:

  • @thanks ,但我无法理解,请您简单解释一下..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多