订阅事件不会每次都被调用

时间:2015-07-16 08:32:58

标签: javascript jquery knockout.js knockout-mvc

我有搜索屏幕,当用户导航到结果页面时,结果页面上有一些带有值(分钟,字符)的单选按钮。

我已经订阅了结果页面上的单选按钮点击事件,当用户点击订阅功能应该调用的单选按钮时。

现在的问题是:

1)当用户第一次点击搜索按钮时,会显示结果。

2)用户选择“分钟”单选按钮调用订阅事件并正常工作。

3)用户选择后退按钮,用户被重定向到搜索屏幕。

4)用户点击搜索按钮,结果是dsiplayed。

5)用户尝试单击“”字符“按钮,不调用订阅事件。

她是我的代码:

<div class="nmc-righttab" style="width: 60%">
    <div class="nmc-righttab" style="margin-left:20px">
        <label class="nmc-label" style="line-height:21px">@Res.Trends.DisplayResultBy</label>
    </div>
    <div class="nmc-righttab" style="width:250px">
        <div class="nmc-lefttab" style="margin-left:5px">
            <input type="radio" id="MinuRadio" name="GphInterval" value="2" data-bind="checked:GraphClick" />
        </div>
        <div class="nmc-righttab">
            <label class="nmc-label" for="MinuRadio" style="line-height:21px">@Res.Trends.Minutes</label>
        </div>
        <div class="nmc-lefttab" style="margin-left:5px">
            <input type="radio" id="CharRadio" name="GphInterval" value="3" data-bind="checked:GraphClick" />
        </div>
        <div class="nmc-righttab">
            <label class="nmc-label" for="CharRadio" style="line-height:21px">@Res.Trends.Characters</label>
        </div>
    </div></div>

JS代码:

  this.GraphClick.subscribe(function (val) {
      model.showGraphResults(true);
      model.GraphIntervalSelected(val);
      searchSpeechGraphView(speechUsage);
  }, this)

1 个答案:

答案 0 :(得分:1)

不要将this作为参数传递给subscribe方法,为什么不将该匿名函数与this对象绑定。像这样

JS代码:

this.GraphClick.subscribe(function (val) {
  model.showGraphResults(true);
  model.GraphIntervalSelected(val);
  searchSpeechGraphView(speechUsage);
}.bind(this));