Javascript Durandal widgets内部功能范围和上下文
我有durandal小部件和两个syncfusion按钮: view.htmlJavascript Durandal widgets内部功能范围和上下文,javascript,durandal,syncfusion,Javascript,Durandal,Syncfusion,我有durandal小部件和两个syncfusion按钮: view.html <div class="group-btn-container"> <input type="checkbox" data-bind="ejToggleButton: toggleButtonNo" /> <input type="checkbox" data-bind="ejToggleButton: toggleButtonYes" />
<div class="group-btn-container">
<input type="checkbox" data-bind="ejToggleButton: toggleButtonNo" />
<input type="checkbox" data-bind="ejToggleButton: toggleButtonYes" />
</div>
两个按钮“是”和“否”应该像单选按钮一样工作,当一个打开时,另一个应该关闭
问题1:我对ViewModel上下文或范围有问题。
在单击函数中,我没有看到“self”,实际上self总是另一个小部件,因为在一个循环中,我呈现了两个小部件,我不知道为什么self不是我的函数
问题2:当我想直接从单击函数接近对象“toggleBtnNo”或“toggleBtnYes”时,它们也没有定义。为什么我在我的内部“单击”函数中看不到全局函数ctor中的对象
我只是不知道如何通过单击功能接近按钮(以一种或另一种方式)如何更改其状态?从您提供的代码片段来看,您似乎试图通过为模型指定值来更新切换按钮的状态。这样,模型值就被分配了,并且在ToggleButton控件中没有反映出来 相反,对于要更新的ToggleButton控件,您需要更新模块中可观察变量(self.toggleButtonNo.toggleState)中的值,并调用ko.applyBindings方法,以便模型值将通过ToggleButton控件更新 请参考下面提供的代码片段 HTML
<input id="yes" type="checkbox" data-bind="ejToggleButton: {toggleState: toggleButtonYes.toggleState , defaultText: settings.defaultText, activeText: settings.activeText, click: toggleButtonYes.click}" />
<input id="no" type="checkbox" data-bind="ejToggleButton: {toggleState: toggleButtonNo.toggleState, defaultText: settings.defaultText, activeText: settings.activeText, click: toggleButtonNo.click}" />
这是有史以来最严重的错误。我看了一百万遍,没有注意到。我感到羞愧 我没有把“var”放在self前面
self = this;
应该是:
var self = this;
它导致self进入全局范围,并且每当其他小部件覆盖self的值时。谢谢您的回答。你是对的,我在淘汰赛中犯了错误,没有做应用绑定。但是我的问题是self/这不是我的功能的self,那么其他人还在这里。我不确定,但这是杜兰达尔的问题。也许我没有正确构造“ctor”函数。在你的例子中,我也有一个问题。
self = this;
var self = this;