0

私はアンダースコアとバックボーンで立ち往生しています。アンダースコア テンプレート内で JSON をレンダリングできません。ブラウザは何も出力しませんが、エラー メッセージはありません。ここに私の仕事があります:

サーバーは次の json を返します。

[{"id":"1","vorname":"Magnus","nachname":"R.","geb":"0","natio":""},{"id":"2","vorname":"Konstantin","nachname":"W.","geb":"0","natio":""}]

///////マイモデル://////

define([
  'underscore',
  'backbone',
], function(_, Backbone){

  var MitarbeiterModel = Backbone.Model.extend({});
  return MitarbeiterModel;
});

/////私のコレクション:///////

define([
  'underscore',
  'backbone',
  'models/mitarbeiter',


], function(_, Backbone, MitarbeiterModel){

  var MitarbeiterCollection = Backbone.Collection.extend({
    model: MitarbeiterModel,
    url: '/aquilamus/server/request.php',

  });

  return MitarbeiterCollection;
});

//////私の見解///////

define([
  'jquery',
  'underscore',
  'backbone',
  'collections/mitarbeiter',
  'text!/aquilamus/templates/mitarbeiter/mitarbeiter.html'
], function($, _, Backbone, MitarbeiterCollection, MitarbeiterTemplate){



 var MitarbeiterListView = Backbone.View.extend({
    el: $("#container"),
    initialize: function(){
      this.collection = new MitarbeiterCollection;

      var newtemplate = MitarbeiterTemplate;
       _.templateSettings.variable = "rc";
      this.template = _.template($(newtemplate).html());
    },
    render: function(){
      var self = this;

      // show some loading message
      this.$el.html('Loading');

      // fetch, when that is done, replace 'Loading' with content
      this.collection.fetch().done(function(){
          console.log(self.collection.toJSON());
          var renderedContent = self.template(self.collection.toJSON());

          self.$el.html(renderedContent);
      });
      return this;
    }


  });
  // Our module now returns our view
  return MitarbeiterListView;
});

アンダースコア テンプレート:

<script type='text/javascript' id='mitarbeiter-anzeigen'>
    <% _.each( rc.mitarbeiter, function(mitarbeiter){ %>
        <div>test</div>
        <div><%= mitarbeiter.vorname %></div>

    <% }); %>   
</script>

console.log(self.collection.toJSON()) は次のログを記録します。

ここに画像の説明を入力

4

2 に答える 2

2

テンプレートには次のものがあります。

<% _.each( rc.mitarbeiter, function(mitarbeiter){ %>

そのRCはどこから来たのですか?

コントローラー内のコードは次のようになります。

self.template({ "mitarbeiters": self.collection.toJSON() });

そして、あなたのテンプレートの中で:

<% _.each( mitarbeiters, function(mitarbeiter){ %>
于 2013-03-24T14:31:13.110 に答える
0

回答: ///UPDATED アンダースコア template:////

<script type='text/javascript' id='mitarbeiter-anzeigen'>
    <% _.each(rc.mitarbeiters, function(mitarbeiters){ %>
        <div><%= mitarbeiters.vorname %></div>

    <% }); %>   

////更新ビュー:///////

define([
  'jquery',
  'underscore',
  'backbone',
  'collections/mitarbeiter',
  'text!/aquilamus/templates/mitarbeiter/mitarbeiter.html'
], function($, _, Backbone, MitarbeiterCollection, MitarbeiterTemplate){



 var MitarbeiterListView = Backbone.View.extend({
    el: $("#container"),
    initialize: function(){
      this.collection = new MitarbeiterCollection;

      var newtemplate = MitarbeiterTemplate;
       _.templateSettings.variable = "rc";
      this.template = _.template($(newtemplate).html());
    },
    render: function(){
      var self = this;

      // show some loading message
      this.$el.html('Loading');

      // fetch, when that is done, replace 'Loading' with content
      this.collection.fetch().done(function(){
          console.log(self.collection.toJSON());
          var renderedContent = self.template({ "mitarbeiters": self.collection.toJSON() });

          self.$el.html(renderedContent);
      });
      return this;
    }


  });
  // Our module now returns our view
  return MitarbeiterListView;
});
于 2013-03-24T14:44:59.647 に答える