问题标签 [knockout-components]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2043 浏览

knockout.js - 使用 KnockoutJS 进行组件间通信

假设您有一个包含以下视图模型的产品概览页面:

  • 产品索引视图模型;绑定到整个页面的根视图模型
    • 产品列表视图模型;用于显示所有产品的小部件
    • 产品注册视图模型;用于注册新产品的小部件

小部件是通过使用自定义 HTML 元素(例如<product-list></product-list><product-registration></product-registration>)加载的。这很棒,因为我不必将这些小部件的任何知识放在我的根模型中。但是,我还想在用户注册新产品后刷新产品列表。简而言之:

如何从 ProductRegistrationViewModel 向 ProductListViewModel 发送信号?

我已经查看了Knockout Postbox,但这似乎并不能解决问题。如果我有多个产品列表并且我只想刷新其中一个怎么办?理想情况下,我想在组件的视图模型上实现一系列公共方法。然后从我的页面的根视图模型将两者联系在一起,如下所示:

但是,我无法从这里访问这些视图模型。还是我?

如何从我的根视图模型访问子视图模型?

最后,如果有人看到我的问题的更好解决方案:我全神贯注!

0 投票
1 回答
781 浏览

javascript - 如何在淘汰 AMD 组件之间应用过渡效果

是否可以在使用 require 加载的淘汰赛组件之间进行动画转换?那么当 state() 发生变化时,组件会淡入/滑入到位吗?

过去我用 fadeVisible 做过类似的事情,但这似乎不适用于 amd/require 和新组件 api。有任何想法吗?谢谢 :)

登记

用法

小提琴:如何在淘汰赛和组件之间应用过渡效果

0 投票
1 回答
3321 浏览

javascript - 如何访问 Knockout 组件中的自定义元素?

看看这个场景:

如果我使用<hello></hello>生成的 html 结果将是:

但是如果我想要这个怎么办:

那么如何获取对组件中自定义元素标签的引用呢?

0 投票
1 回答
169 浏览

javascript - 没有在 knockoutjs 3.2.0 中处理自定义元素

我最近更新到 3.2,我真的很想利用可用的自定义元素和组件绑定。

现在我制作了一个这样的自定义组件加载器:

它是一个打字稿模块,但它被转换为 JS 并使用以下方式注册:

我已经在 FF 中进行了调试,一切似乎都按预期工作,然后我在几行之后进行了以下注册:

我有一个类用于使用我的自定义加载器完成注册:

这里的模块不是 js 模块,它是我们框架中的另一个概念。无论如何,所有注册都按预期进行,然后最终何时ko.applyBindings()被调用,并且页面上有一个自定义元素组件的实例,即:

没有任何控制台日志消息被吐出,并且标题菜单没有注入相关模板等。因此,忽略加载器的具体实现细节,只查看加载器和组件的注册以及元素使用情况应该这样工作?

从它的 KO 页面来看,我想我已经遵循了所有步骤,但无法弄清楚为什么它没有被解雇......

0 投票
2 回答
2763 浏览

javascript - foreach 和模板中的淘汰组件

因此,随着组件和自定义元素的引入,封装逻辑和标记似乎要容易得多,但是当您需要传入视图模型时,我有点不确定如何在 foreach 部分中使用组件。

所以我目前的情况是我有一个看起来像这样的视图模型:

现在在上面我们有一个包含部分数据的 POJO,并且我们有一个用于视图的主视图模型,它将联系 Web 服务或其他东西,并用部分实例填充它的数组。那么这目前将像这样使用:

现在假设.partial-viewis 在具有正确模板名称等的脚本标记中并且是正确的模板,然后#partial-datais 在主视图中并希望在页面上显示所有实例。现在一切正常,但我想转移到一个更多基于组件的模型,目前我们可以看到模板依赖于 SomePartialViewModel 数据,所以我们有我们的模板和该组件的视图模型,但是问题就在附近将视图模型放入组件中,因为当前您在设置时注册组件,然后使用参数填充它的块。但是在这种情况下,我想在绑定时将视图模型传递给组件......

所以我想知道如何才能做到这一点,因为我想我可以使用模板注册组件但没有视图模型,但是是否有data样式绑定的概念,我可以在其中设置$data属性并从模板移动到 foreach绑定视图?

希望可以看到我要解决的问题,并且任何信息都会很棒。

0 投票
1 回答
4009 浏览

knockout.js - 从淘汰赛 3.2 中的自定义组件更新 observable

我正在尝试使用淘汰赛 3.2中的自定义组件并从组件内更新 observable。这是我的自定义组件的示例:

它的模板如下所示:

问题是当我在完整的 JS fiddle 中单击 Up/Down 功能时。我明白了

未捕获的错误:除非您指定“写入”选项,否则无法将值写入 ko.computed。如果您想读取当前值,请不要传递任何参数。

当然,我可以var a = new Vm();从组件内部使用和更新它,a.yourVote(num);但这打破了组件的整体理念。

我怎样才能正确地做到这一点?

0 投票
1 回答
1045 浏览

data-binding - 淘汰赛 3.2 组件 - 无法访问 foreach 绑定中的组件视图模型根

使用淘汰赛的新 3.2 组件规范,我正在尝试创建一个内部带有 foreach 绑定的组件,该组件呈现对象集合。foreach 绑定中的对象需要访问组件 VM 上的属性,但似乎在 foreach 循环中丢失了该引用。

有没有一种简单的方法可以直接访问其模板内组件视图模型的根?

组件虚拟机:

组件模板:

0 投票
1 回答
994 浏览

javascript - 淘汰组件绑定属性错误

我想动态添加属性 id 到标签,但它给出了错误

“Uncaught ReferenceError: Unable to process binding “attr: function (){return {id:id} }”消息:id is not defined”

我的html-

我的视图模型-

我添加了 attr:{id:id} 仍然是它的错误。任何人都可以帮助我。

0 投票
1 回答
932 浏览

knockout.js - 订购淘汰组件列表

我有一个淘汰组件列表

以下是我如何创建可观察的组件定义数组,并按预期呈现。

但是我不确定如何对它们进行排序。我的数组只有创建组件时创建的 viewModelname和 the,但没有。jsonData

我希望数组中的项目保留为组件,以便使它们易于重复使用。

有没有办法访问创建的视图模型,以便我可以根据它的属性进行排序?

0 投票
1 回答
368 浏览

javascript - Knockout 3.2 - AMD 加载组件之间基于“if”的转换

我有一个 SPA,它使用通过 require 动态加载的淘汰组件。

这是它目前的样子

我正在寻找的是与if虚拟元素的绑定产生相同结果的东西,但也允许我在状态更改时放置一个过渡(淡入/淡出)。

我发现了类似http://jsfiddle.net/rniemeyer/kNtdu/的东西,它似乎适用于淘汰赛 2.1 但不适用于 3.2。

请注意,我不只是在寻找 a fadeVisible,而是更多地寻找 a fadeIf

谢谢你的帮助。