【问题标题】:Knockoutjs - Pass observable value to another function?Knockoutjs - 将可观察值传递给另一个函数?
【发布时间】:2013-09-12 20:08:31
【问题描述】:

我正在使用返回模式加载我的视图模型。我的虚拟机有一个名为“intro”的可观察对象。

我想将'intro' observable 的值传递给我页面上的另一个脚本。

在下面的代码中,如何将 twtTitle 的值设置为“intro”可观察值?

谢谢。

<script type="text/javascript">
      var twtTitle = my.intro.value;
      var twtUrl = location.href;
      var maxLength = 140 - (twtUrl.length + 1);
      if (twtTitle.length > maxLength) {
          twtTitle = twtTitle.substr(0, (maxLength - 3)) + '...';
      }
      var twtLink = 'http://twitter.com/home?status=' 
                  + encodeURIComponent(twtTitle + ' ' + twtUrl);
      document.write
      (
         '<a href="' + twtLink + '" target="_blank"' + '>' + 
         '<img src="/Images/tweetthis.gif"  border="0" alt="Tweet This!" /' + 
         '><' + '/a>'
      );
</script>

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    事件聚合器模式怎么样?我为我的 SignalR Eventtaggregator 库制作了一个 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy

    如果您不需要 SignalR,您可以提取相关的客户端事件聚合器代码,请参阅此小提琴

    http://jsfiddle.net/jh8JV/

    对于您的特定用途,您可以这样做

    this.intro = ko.observable();
    this.intro.subscribe(function(value) {
       signalR.eventAggregator.publish(new MyApp.IntroChanged(value));
    }, this); 
    

    这种模式的好处是解耦、强类型消息和高可扩展性。

    【讨论】:

      猜你喜欢
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      相关资源
      最近更新 更多