0

javascript モジュールを別のモジュールにロードして使用するにはどうすればよいですか。たとえば、別のモジュールでそのオブジェクトのインスタンスを作成するために使用したいオブジェクトを持つモジュールが必要です。

例: オブジェクト モジュール:

`

define(["knockout"],function(){
   var postobj = function(name,age){
     this.name = ko.observable(name);
     this.age = ko.observable(age);
   }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.1.0/knockout-min.js"></script>
モジュールの2番目の部分には、このコードがあります

define(["knockout"],function(ko){
  this.posts = ko.observableArray();
  
  var people = [{name: "katuula Kalali Joel", age: "23"},
                {name: "keman Migadde", age: "30"},
                {name: "Ntanda Hakim", age: "19"}];
  
  jQuery.each(people,function(index,value){
                    this.posts.push(new imageobj(value['name'],value['age']));
                },this);
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.1.0/knockout-min.js"></script>

「Uncaught ReferenceError: postobj is not defined」というエラーが表示されます

4

1 に答える 1

2

元のモジュールを 2 番目のモジュールへの参照としてプルする必要があります。2 番目のものでは、 を使用しているように見えますがimageobj、 と同様のシナリオになると想定していますpostobj

したがって、モジュールを次のようにする必要があります。

define(["knockout"],function(){
   var postobj = function(name,age){
     this.name = ko.observable(name);
     this.age = ko.observable(age);
   };

    // important to return the value of your module
    return postobj;
});

2 番目のモジュールでは、次のように最初のモジュールを取り込みます。

define(["knockout", "path/to/postobj"],function(ko, Postobj){
  function ViewModel() {
      this.posts = ko.observableArray();

      var people = [{name: "katuula Kalali Joel", age: "23"},
                {name: "keman Migadde", age: "30"},
                {name: "Ntanda Hakim", age: "19"}];

      jQuery.each(people,function(index,value){
                    this.posts.push(new Postobj(value['name'],value['age']));
                },this);

  }

  return new ViewModel();

});
于 2015-02-27T14:32:45.127 に答える