问题标签 [knockout-2.0]
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 - 如何使用淘汰赛js从子数组访问父变量
我正在使用淘汰赛并有一个数组“属性”,每个“属性”都可以有子“属性”
一切都很好,除了应该继承数组“TabID”的一个属性 - 例如,如果它在父“Property”上更改,它也应该在子“Property”上更改
我试图通过使用创建计算来使其工作,例如。
然后意识到 $parent 仅在 foreach 循环中可用
我也尝试过在构造函数中传递父级,例如
有人可以指出我正确的方向吗?作为旁注,我还需要能够访问父级以进行基于零的 [i] 计算
也就是说,每个父属性应该是 properties[i].propitem 其中 i = 基于每个父级 + 它们的子级属性的计算值
例如:如果父属性 1 有 3 个子属性,那么父属性 1 应该是 i=0,子属性 (i=1,2,3),然后父属性 2 的“i”应该是 4
我知道...我要求不高,我并不期待我的问题有一个完美的解决方案,但如果有人至少能指出我正确的方向,我将非常感激。
干杯。
knockout.js - 淘汰赛 simplegrid 中的复选框
我正在使用淘汰赛 simplegrid。绑定到它的 json 对象中的一个属性是布尔值。它当前在网格中显示为“真”或“假”。
我需要的是一个允许用户单击的复选框(这反过来会向服务器触发命令)。
这可能与 SimpleGrid 吗?
jquery-ui - 带有 jQuery UI 拖放的 Knockoutjs 在 IE8 中失败
我正在使用带有 jquery 拖放的 knockoutjs,它在 Chrome、Firefox、IE9 中运行良好,但在 IE8 中运行良好。我无法发布实际代码,但我创建了一个可以重现错误的 jsfiddle 示例。请查看http://jsfiddle.net/wired1/P9hns/20/ 它在最新的 Firefox、Chrome 和 IE9 中运行良好。但是在 IE8 中尝试拖动时出现以下错误:
IE8 错误 #1
SCRIPT5007:无法获取属性“选项”的值:对象为空或未定义 jquery-ui.1.8.18.js,第 1412 行字符 13
这是jquery ui中引用的代码:
就是stop函数中变量o的声明:var o = $(this).data('draggable').options;
如果我在 jquery ui 中注释掉这两行,我会收到以下错误:
IE8 错误 #2
SCRIPT5007:无法获取属性“选项”的值:对象为 null 或未定义 jquery-ui.1.8.18.js,第 1439 行字符 38
这指向:
这是上面代码片段的最后一行,其中o = i.options。
如果我将 {scroll: false} 设置为 jqueryui 可拖动的选项,错误就会消失,但它仍然不起作用。
似乎当我开始按顺序拖动所有事件时,即使未释放鼠标单击(在 jsfiddle 中运行代码测试时,请查看控制台以查看日志)。
是 jquery ui 问题还是我做错了什么?对此的任何帮助将不胜感激。
knockout.js - KO:“Throttle”扩展器是否会降低 PausableComputed 的实用性?
像我之前的许多其他 Knockout 开发人员一样,我在 IE 中遇到了“运行缓慢的脚本”警告。
在分析我的客户端脚本之前,我想看看其他人是如何解决类似问题的。[顺便说一下,这是我找到的最好的 Knockout 分析建议。]
- @RP Niemeyer 建议PauseableComputeds在这些情况下很有用。
- 他是对的。事实上,PausableComputed在这些情况下很有用。我在代码中实现了 PauseableComputed,它解决了我的问题。
- 但后来,我通过阅读这个答案发现了“油门”扩展器。
这是我的两部分问题:
- 引入扩展器是为了解决PauseableComputeds
throttle
试图解决的相同问题吗? - 解决 IE 中“运行缓慢的脚本”警告的两个同样好的结构吗?
knockout.js - KO:用 ko 实用方法遍历可观察数组是不是很糟糕?
从这篇文章:
我首先建议您优化您的
dependentObservable
(又名computed
)。当你读取任何 observable 时,Knockout 会在 Dependency Manager 中注册一个对它的依赖...我可以在您的伪代码中看到您正在 while 循环中访问 this.ParentList() 。这意味着 registerDependency 将被调用 3000 次,并且依赖数组将被扫描 3000 次,这对 IE 不利(因为它没有内置的 Array.indexOf 方法)。
所以我的第一个建议是:在循环之前阅读所有的 observables。
考虑到这个好建议,这是我的问题:
observable
使用 ko 实用方法(如下所示)遍历数组是不是很糟糕?[假设这this.mySelectListItems()
是一个observableArray
]:
换句话说,做以下事情有什么好处吗?
javascript - 使用 KnockoutJS,如何指定要绑定的 ViewModel?
这是一个非常简单的问题,所以我真的希望有一个简单的解决方案。我不想使用任何外部模板库,因为虽然我熟悉 EmberJS,但 Ember 对我目前正在处理的应用程序来说太过分了。
我已经设置了一个快速的 JSFiddle:http: //jsfiddle.net/zeEFP/3/
knockout.js - 使用 Mapping 插件的 Knockoutjs Cascading 下拉列表:未定义的引用错误
我正在尝试基于 Knockout.js Cart 示例创建一个级联下拉列表,但使用 Mapping 插件来获取我的数据。
我的映射插件工作正常,模板工作正常,第一个选择很好,但第二个选择出错。
错误:
消息:ReferenceError:PayCodes 未定义;绑定值:options:PayCodes, optionsValue:'Value', optionsText:'Text', value: $parent.PayCodeId
换行:
to:(添加了“this”关键字)
修复了错误,但第二个选择仍然不起作用。它永远不会有任何选择。PayCodes 数组存在,如附加的 JSON 数据所示。
这是复制问题的小提琴:http: //jsfiddle.net/JLhSx/13/
格式化的 JSON 在这里,以防万一。
有什么建议么?
编辑原件:
添加
在我的“with:”部分中只返回我的 PayTypeId 的 ID,因此“with:”部分没有像我预期的那样获得完整的可观察的 PayTypes 数组。我该如何重构它,以便第一个下拉列表显示 PayTypes 列表,第二个下拉列表显示所选 PayType 的 PayCodes?
更新的小提琴
谢谢!
asp.net-mvc - Knockout.js foreach 绑定值未分配给当前对象
我有一个简单的jsfiddle,我正在尝试更改每个 foreach 绑定的值。如果我尝试更改一行的值,则绑定会更新我不想要的所有其他行。这个绑定有什么问题?
更新:我将 self.lines.push 移入购物车模型
javascript - 如何在事件中写信给 ko.observable?
我正在使用敲除来进行绑定,并且正在开发共享模块。基本上,有几个链接,它们基本上都使用不同的值调用相同的函数。例如,当您单击 Facebook 时,所有服务的值为“Facebook”,而当您单击 Twitter 时,则调用值为“Twitter”的函数。但基本上调用相同的函数。现在没有办法从 HTMl 指定参数,因为我所能做的就是 data-bind="click: Share" 之类的。在这里我们可以看到我不能在这里指定任何参数。
现在我可以在我的 js 文件中创建一个 ko.observable ,这个函数将作为参数......但是当点击不同的链接时,我需要一种方法来从 html 点击事件中写入该 observable 。关于如何做的任何想法?
knockout.js - KO,Underscore.js:是否可以限制模板绑定?
使用带有 Underscore.js 模板引擎的 Knockout...
- 当我尝试将 2004 列表项绑定到
ul
DOM 元素时,IE8 阻塞并弹出“运行缓慢的脚本”警告。 - 起初,我认为这个解决方案可以解决我的问题。不幸的是,它没有。
- 所以我使用了 Google Chrome 的 profiler。它声称我的代码大部分时间都花在
a.c.options.update
.- 所以我被引导相信模板绑定正在执行超过 500 万个连续的 Javascript 语句,并且我需要以某种方式限制这个绑定,也许使用 setTimeout 语句。
我的两部分问题:
- 我是否正确地解决了这个问题?
- 如果是这样,我可以限制 Underscore.js 的模板引擎(在
foreach
其中呈现我的ul
DOM 元素?