0

そこで、古い Web フォーム アプリをよりモジュール化するように変換し、ノックアウトを使用してページを書き直しました。すべてが機能するようになったので、ノックアウト ビューモデルをモジュールにエクスポートしたかったのですが、組み込みのテンプレート システムがテンプレートをレンダリングしないという問題が発生しています。

例えば

<script type="text/javascript">
  var MyPage = (function($, ko) {
    var my = {};
    my.Message = function(message) {
      var self = this;
      self.messageId = message.messageId;
      self.messageText = message.messageText;
    };
    my.MessageViewModel = function() {
      var self = this;
      self.messageArray = ko.observableArray([]);

      self.getMessageArray = function() {
        $.ajax({
          //get message array
          success: function() {
          //map message array and push new my.Message into messageArray
          }
        });
      };
    };
    return my;
  }) (jQuery, ko);
  $(document).ready(function () {
    ko.applyBindings(new MyPage.MessageViewModel());
  });
</script>

<script type="text/html" id="messageTemplate">
  <tr>
    <td data-bind="text: messageId"></td>
    <td data-bind="text: messageText"></td>
  </tr>
</script>

//exert from html

<table>
  <thead>
    <tr>
      <th>Message Id</th>
      <th>Message Text</th>
    </tr>
  </thead>
  <tbody data-bind="template: {name: 'messageTemplate', foreach: messageArray}">
  </tbody>
</table>
4

1 に答える 1

0

テンプレートの名前は、次のように引用する必要があります。

<tbody data-bind="template: {name: 'messageTemplate', foreach: messageArray}">
  </tbody>

それ以外の場合は、変数として評価messageTemplateして、使用するテンプレート名を決定しようとします。

于 2012-07-18T13:43:00.477 に答える