0

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

我想将可观察到的“介绍”的值传递给我页面上的另一个脚本。

在下面的代码中,如何将 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>
4

1 回答 1

0

事件聚合器模式怎么样?我为我的 SignalR Eventaggregator 库制作了一个 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); 

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

于 2013-09-12T11:55:30.777 回答