Javascript Backbone.js模板不从模型继承属性

Javascript Backbone.js模板不从模型继承属性,javascript,backbone.js,asp.net-web-api,Javascript,Backbone.js,Asp.net Web Api,我正在尝试使用主干网进行简单的SPA测试。渲染视图时,下划线模板不会从模型继承任何属性。我假设我犯了一个简单的错误,但在摆弄了一个多小时之后,我在这里寻求一些指导。如果有帮助的话,我正在使用ASP.NETWebAPI2、jQuery2.x+以及最新版本的主干和下划线 我的模板: <script type="text/template" id="equipmentTemplate"> <td><%= ID %></td> <td

我正在尝试使用主干网进行简单的SPA测试。渲染视图时,下划线模板不会从模型继承任何属性。我假设我犯了一个简单的错误,但在摆弄了一个多小时之后,我在这里寻求一些指导。如果有帮助的话,我正在使用ASP.NETWebAPI2、jQuery2.x+以及最新版本的主干和下划线

我的模板:

<script type="text/template" id="equipmentTemplate">
    <td><%= ID %></td>
    <td><%= Name %></td>
    <td><%= Quantity %></td>
    <td><%= Description %></td>
</script>
调用运行
console.log(device.fetch())
时,从服务器返回以下内容:

Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseJSON: Object
responseText: "{"ID":1,"Name":"A random part","Quantity":2,"Description":"foo bar approved."}"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object
但是,当我返回视图的el时,我看到:

equipmentView.$el.html()
"
    <td></td>
    <td></td>
    <td></td>
    <td></td>
"
然而,这只会产生一个空的
…这似乎是不对的

更新: 知道了,多亏了gerl

我需要获取视图内部的模型:

// Create single model view
EquipmentView = Backbone.View.extend({
    initialize: function () {
        this.model.fetch();
    },
    tagName: "tr",
    template: _.template($("#equipmentTemplate").html()),
    render: function () {
        this.$el.html(this.template(this.model.toJSON()));
    }
});
var equipmentView = new EquipmentView({ model: equipmentModel });
equipmentView.render();

这起作用了

在模型或集合中添加fetch调用(无论哪个调用来自json)

比如:

var EquipmentList = Backbone.Collection.extend({
    model: EquipmentModel,
    url: '/api/equipment',
    initialize: function() { 
      this.fetch(); 
    }
});

尝试在模型属性中添加默认值,如默认值:{ID:1,Name:'bob'…},然后查看是否可以打印。您还可以在集合中的initialize中添加fetch调用。类似于initialize:function(){this.fetch();}它做了-例如:var-EquipmentModel=Backbone.Model.extend({urlRoot:'/api/device',默认值:{ID:42,名称:'gerlTest',数量:12,描述:'Testing'},});返回42个gerlTest 12测试。。。我想我有点困惑,即使是中的默认值,当我调用model.toJSON()的实例时,它仍然返回从服务器获取的数据。但是,我不知道为什么会发生这种情况。好吧-所以在initialize中抛出this.model.fetch()解决了这个问题。你介意把它作为一个答案,这样我就可以接受它并给你分数了吗?没问题。给你。:)
// Create single model view
EquipmentView = Backbone.View.extend({
    initialize: function () {
        this.model.fetch();
    },
    tagName: "tr",
    template: _.template($("#equipmentTemplate").html()),
    render: function () {
        this.$el.html(this.template(this.model.toJSON()));
    }
});
var equipmentView = new EquipmentView({ model: equipmentModel });
equipmentView.render();
var EquipmentList = Backbone.Collection.extend({
    model: EquipmentModel,
    url: '/api/equipment',
    initialize: function() { 
      this.fetch(); 
    }
});