问题标签 [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.
knockout.js - 使用 KnockoutJS 进行组件间通信
假设您有一个包含以下视图模型的产品概览页面:
- 产品索引视图模型;绑定到整个页面的根视图模型
- 产品列表视图模型;用于显示所有产品的小部件
- 产品注册视图模型;用于注册新产品的小部件
小部件是通过使用自定义 HTML 元素(例如<product-list></product-list>
和<product-registration></product-registration>
)加载的。这很棒,因为我不必将这些小部件的任何知识放在我的根模型中。但是,我还想在用户注册新产品后刷新产品列表。简而言之:
如何从 ProductRegistrationViewModel 向 ProductListViewModel 发送信号?
我已经查看了Knockout Postbox,但这似乎并不能解决问题。如果我有多个产品列表并且我只想刷新其中一个怎么办?理想情况下,我想在组件的视图模型上实现一系列公共方法。然后从我的页面的根视图模型将两者联系在一起,如下所示:
但是,我无法从这里访问这些视图模型。还是我?
如何从我的根视图模型访问子视图模型?
最后,如果有人看到我的问题的更好解决方案:我全神贯注!
javascript - 如何在淘汰 AMD 组件之间应用过渡效果
是否可以在使用 require 加载的淘汰赛组件之间进行动画转换?那么当 state() 发生变化时,组件会淡入/滑入到位吗?
过去我用 fadeVisible 做过类似的事情,但这似乎不适用于 amd/require 和新组件 api。有任何想法吗?谢谢 :)
登记
用法
javascript - 如何访问 Knockout 组件中的自定义元素?
看看这个场景:
如果我使用<hello></hello>
生成的 html 结果将是:
但是如果我想要这个怎么办:
那么如何获取对组件中自定义元素标签的引用呢?
javascript - 没有在 knockoutjs 3.2.0 中处理自定义元素
我最近更新到 3.2,我真的很想利用可用的自定义元素和组件绑定。
现在我制作了一个这样的自定义组件加载器:
它是一个打字稿模块,但它被转换为 JS 并使用以下方式注册:
我已经在 FF 中进行了调试,一切似乎都按预期工作,然后我在几行之后进行了以下注册:
我有一个类用于使用我的自定义加载器完成注册:
这里的模块不是 js 模块,它是我们框架中的另一个概念。无论如何,所有注册都按预期进行,然后最终何时ko.applyBindings()
被调用,并且页面上有一个自定义元素组件的实例,即:
没有任何控制台日志消息被吐出,并且标题菜单没有注入相关模板等。因此,忽略加载器的具体实现细节,只查看加载器和组件的注册以及元素使用情况应该这样工作?
从它的 KO 页面来看,我想我已经遵循了所有步骤,但无法弄清楚为什么它没有被解雇......
javascript - foreach 和模板中的淘汰组件
因此,随着组件和自定义元素的引入,封装逻辑和标记似乎要容易得多,但是当您需要传入视图模型时,我有点不确定如何在 foreach 部分中使用组件。
所以我目前的情况是我有一个看起来像这样的视图模型:
现在在上面我们有一个包含部分数据的 POJO,并且我们有一个用于视图的主视图模型,它将联系 Web 服务或其他东西,并用部分实例填充它的数组。那么这目前将像这样使用:
现在假设.partial-view
is 在具有正确模板名称等的脚本标记中并且是正确的模板,然后#partial-data
is 在主视图中并希望在页面上显示所有实例。现在一切正常,但我想转移到一个更多基于组件的模型,目前我们可以看到模板依赖于 SomePartialViewModel 数据,所以我们有我们的模板和该组件的视图模型,但是问题就在附近将视图模型放入组件中,因为当前您在设置时注册组件,然后使用参数填充它的块。但是在这种情况下,我想在绑定时将视图模型传递给组件......
所以我想知道如何才能做到这一点,因为我想我可以使用模板注册组件但没有视图模型,但是是否有data
样式绑定的概念,我可以在其中设置$data
属性并从模板移动到 foreach绑定视图?
希望可以看到我要解决的问题,并且任何信息都会很棒。
knockout.js - 从淘汰赛 3.2 中的自定义组件更新 observable
我正在尝试使用淘汰赛 3.2中的自定义组件并从组件内更新 observable。这是我的自定义组件的示例:
它的模板如下所示:
问题是当我在完整的 JS fiddle 中单击 Up/Down 功能时。我明白了
未捕获的错误:除非您指定“写入”选项,否则无法将值写入 ko.computed。如果您想读取当前值,请不要传递任何参数。
当然,我可以var a = new Vm();
从组件内部使用和更新它,a.yourVote(num);
但这打破了组件的整体理念。
我怎样才能正确地做到这一点?
data-binding - 淘汰赛 3.2 组件 - 无法访问 foreach 绑定中的组件视图模型根
使用淘汰赛的新 3.2 组件规范,我正在尝试创建一个内部带有 foreach 绑定的组件,该组件呈现对象集合。foreach 绑定中的对象需要访问组件 VM 上的属性,但似乎在 foreach 循环中丢失了该引用。
有没有一种简单的方法可以直接访问其模板内组件视图模型的根?
组件虚拟机:
组件模板:
javascript - 淘汰组件绑定属性错误
我想动态添加属性 id 到标签,但它给出了错误
“Uncaught ReferenceError: Unable to process binding “attr: function (){return {id:id} }”消息:id is not defined”
我的html-
我的视图模型-
我添加了 attr:{id:id} 仍然是它的错误。任何人都可以帮助我。
knockout.js - 订购淘汰组件列表
我有一个淘汰组件列表
以下是我如何创建可观察的组件定义数组,并按预期呈现。
但是我不确定如何对它们进行排序。我的数组只有创建组件时创建的 viewModelname
和 the,但没有。jsonData
我希望数组中的项目保留为组件,以便使它们易于重复使用。
有没有办法访问创建的视图模型,以便我可以根据它的属性进行排序?
javascript - Knockout 3.2 - AMD 加载组件之间基于“if”的转换
我有一个 SPA,它使用通过 require 动态加载的淘汰组件。
这是它目前的样子
我正在寻找的是与if
虚拟元素的绑定产生相同结果的东西,但也允许我在状态更改时放置一个过渡(淡入/淡出)。
我发现了类似http://jsfiddle.net/rniemeyer/kNtdu/的东西,它似乎适用于淘汰赛 2.1 但不适用于 3.2。
请注意,我不只是在寻找 a fadeVisible
,而是更多地寻找 a fadeIf
。
谢谢你的帮助。