Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:无法读取属性'_listenId';未定义的-(木偶,主干)_Javascript_Jquery_Backbone.js_Marionette - Fatal编程技术网

Javascript 未捕获类型错误:无法读取属性'_listenId';未定义的-(木偶,主干)

Javascript 未捕获类型错误:无法读取属性'_listenId';未定义的-(木偶,主干),javascript,jquery,backbone.js,marionette,Javascript,Jquery,Backbone.js,Marionette,我一直在试验木偶的复合视图,但我的脚本不断地抛出一个错误“UncaughtTypeError:无法读取未定义的属性'\u listenId'。一次彻底的黑客攻击表明,compositeview从未触发“重置”事件:查看下面的我的代码: 我的模板 <script type="text/template" id="staff-list"> <thead> <tr> <th>First Name</th> <th&g

我一直在试验木偶的复合视图,但我的脚本不断地抛出一个错误“UncaughtTypeError:无法读取未定义的属性'\u listenId'。一次彻底的黑客攻击表明,compositeview从未触发“重置”事件:查看下面的我的代码: 我的模板

<script type="text/template" id="staff-list">
<thead>
  <tr>
    <th>First Name</th>
    <th>Last Name</th>
    <th>course</th>
  </tr>
</thead>
    <tbody>
    </tbody>
</script>

<script type="text/template" id="staff-list-item">
    <td><%= fname %></td>
    <td><%= lname %></td>
    <td><%= course %></td>
</script>
list_controller.js entitystaff.js 我不知道我的代码出了什么问题。我不断地得到这个错误: 未捕获的TypeError:无法读取未定义的属性“\u listenId”

我做错什么了吗?或者版本中有不推荐的内容?

在这里

            $.when(fetchingStaffs).done(function(staffs){
                var contactsListView = new View.Staffs({
                    collection: staffs
                });
员工需要成为骨干。收集实例。然而,延迟查询的结果似乎只是一个简单的数组或对象。参见
defer.resolve(数据、响应、选项)
,其中
数据
是ajax请求的结果

要修复
getStaffEntities
函数,我将使用如下链接:

getStaffEntities : function () {
    var staffs = new Entities.StaffCollection();
    return staffs.fetch().then(function () {
        if (staffs.length === 0) {
            console.log("no initialization");
            var models = initializeStaffs();
            staffs.reset(models);
        }
        return $.when(staffs);
    });
}

这里的
staff
是什么
var contactsListView=newview.staff({collection:staff})
from
var fetchingStaffs=SchoolManager.request(“职员:实体”)来自entitystaff.js
SchoolManager.requres.setHandler(“staff:entities”,function(){return API.getStaffEntities();})您使用的是哪个版本的木偶网?我建议删除所有本地存储和API内容,并首先使用本地数据重新生成一个简单的木偶网视图,请参阅。也可以考虑用4。X,如果可能的话,更好的API.thanks为这个伟大的片段我很高兴。但是如果您从我上面的代码中注意到,问题在于list_view.js
initialize:function(){this.listenTo(this.collection,'reset',function(){console.log(“reset is called”);//这似乎从未达到过this.appendHtml=function(collectionView,itemView){collectionView.$el.append(itemView.el);}}}}
从未调用
console.log('reset is called')
意味着无法对集合进行重置,这是因为在
this.listenTo(this.collection,'reset',function()中{
此.collection
对象不是主干。collection.仍然不起作用..那么从我的源代码中知道我做错了什么吗?或者我如何使员工的收藏与我现在做的有所不同?请仍然期待任何帮助。
define(["app","../config/storage/localstorage"], function(SchoolManager){
    SchoolManager.module("Entities", function(Entities, SchoolManager, Backbone, Marionette, $, _){
    // Private
    // -------------------------
  Entities.Staff = Backbone.Model.extend({
    urlRoot: "staff",

    defaults: {
      fname: "",
      lname: "",
      course: ""
      },



    }); 
    // Public
    // -------------------------
  Entities.configureStorage(Entities.Staff);
  Entities.StaffCollection = Backbone.Collection.extend({
    url: "staff",
    model: Entities.Staff,
  });

   Entities.configureStorage(Entities.StaffCollection);
var initializeStaffs = function(){
    contacts = new Entities.StaffCollection([
      { id: 1, fname: "Alice", lname: "Arten", course: "555-0184" },
      { id: 2, fname: "Bob", lname: "Brigham", course: "555-0163" },
      { id: 3, fname: "Charlie", lname: "Campbell", course: "555-0129" }
    ]);
    contacts.forEach(function(contact){
      contact.save();
    });
    return contacts.models;
  };

 var API = {
    getStaffEntities: function(){
      var staffs = new Entities.StaffCollection();
      var defer = $.Deferred();
      staffs.fetch({
        success: function(data,response, options){
     //console.log("we are winners");
          defer.resolve(data,response, options);
        }
      });
      var promise = defer.promise();
      $.when(promise).done(function(staffs){
        if(staffs.length === 0){
          // if we don't have any contacts yet, create some for convenience
         // var models = initializeContacts();
         console.log("no initialization");
         var models = initializeStaffs();
          staffs.reset(models);
 //        var models = initializeContacts();
//          staffs.reset(models);
         // contacts.reset(models);
        }
      });
      return promise;
    },

    getStaffEntity: function(staffId){
      var staff = new Entities.Staff({id: staffId});
      var defer = $.Deferred();
      setTimeout(function(){
        staff.fetch({
          success: function(data){
            defer.resolve(data);
          },
          error: function(data){
            defer.resolve(undefined);
          }
        });
      }, 2000);
      return defer.promise();
    }
  };

  SchoolManager.reqres.setHandler("staff:entities", function(){
    return API.getStaffEntities();
  });

  SchoolManager.reqres.setHandler("staff:entity", function(id){
    return API.getStaffEntity(id);
  });

});

return;
});
            $.when(fetchingStaffs).done(function(staffs){
                var contactsListView = new View.Staffs({
                    collection: staffs
                });
getStaffEntities : function () {
    var staffs = new Entities.StaffCollection();
    return staffs.fetch().then(function () {
        if (staffs.length === 0) {
            console.log("no initialization");
            var models = initializeStaffs();
            staffs.reset(models);
        }
        return $.when(staffs);
    });
}