Gmkt-potal-webプロジェクト共有

8601 ワード

1.JavaScriptのいくつかの注意点
1.1.functionの理解
  • functionによって定義される変数は、functionタイプの一例である。
  • functionは、JavaまたはC+のクラスのように定義されたインスタンスであり、ユーザ定義のタイプである。このタイプのコンストラクタは普通の関数として呼び出されることができる。一般関数として呼び出した場合
  • function a(){
      alert("Yes");
    }
    a();
    
    タイプとして使う場合
    function GreatMan(){ 
         this.name = "   "; //(1)
         this.speak = function(){ //(2)
            alert("      !");
         }
    }
    GreatMan.will = "   !";  //(3)
    GreatMan.prototype.command="  "; //(4)
    GreatMan.prototype.order = function(){ //(5)
        alert(this.command);
    }
    var p = new GreatMan(); //(6)
    p.speak(); //(7)
    p.order();
    
    (1)メンバー変数の定義方法1.(2)メンバー関数の定義方法1.(2)静的変数の定義方法1.関数の中に入れても良いです。(4)メンバ変数方法を定義する2.(5)メンバ関数方法を定義する2(6)Great Manタイプを作成する例。注意Great Man manを使用してはいけません。この形式を定義します。(7)自分のメンバー関数を呼び出します。
    1.2.JSONスタイルメンバー変数定義
    一般オブジェクトとそのメンバー変数定義
    var a = {
    key1: 0,
    key2: "123",
    key3: 1.2
    };
    alert(a.key2);
    
    関数型の体のメンバー変数の定義:
     function B(){
     }
     B.prototype={
       key4:4,
       key5:-2
     };
     var b = new B();
     alert(b.key5);
    
    実際のコードセグメント:
    BaseEnrollmetCtrl.prototype = {
            getBaseInfoEnums: function () {
                var self = this;
                self.SubmitService.getBaseInfoEnums().then(function (data) {
                    self.$scope.submitTask = data.submitTask;
                    self.$scope.eventTypeList = data.submitType;
                });
            },
            getCategories: function () {
    ...
    
    1.3.call()とappy()関数
    定義:call方法:構文:call([thisObj],arg 1[,arg 2]]]定義:オブジェクトを呼び出す一つの方法で、現在のオブジェクトを別のオブジェクトに置き換える。説明:コール方法は、他のオブジェクトの代わりに一つの方法を呼び出すために使用されてもよい。call方法は、関数のオブジェクトコンテキストを初期のコンテキストから、thisObjによって指定された新しいオブジェクトに変更することができる。thisObjパラメータが提供されていない場合、GlobalオブジェクトはthisObjとして使用される。
    appyメソッド:構文:appy([thisObj])定義:あるオブジェクトを適用する方法で、現在のオブジェクトを別のオブジェクトに置き換えます。説明:もしargArayが有効な配列ではないか、またはargmentsオブジェクトではないなら、TypeErrorを引き起こすことになります。argArayおよびthisObjのいずれかのパラメータが提供されていない場合、GlobalオブジェクトはthisObjとして使用され、任意のパラメータを伝達することができない。使い方:
    function Dog(){    
        this.name = "Dog";    
        this.showName = function(){    
            alert(this.name);    
        }    
    }    
      
    function Cat(){    
        this.name = "Cat";    
    }    
       
    var dog = new Dog();    
    var cat = new Cat();     
    dog.showName.call(cat);    
    
    アプリの使い方:
    /*      */  
    function Person(name,age)  
    {  
        this.name=name;  
        this.age=age;  
    }  
    /*       */  
    function Student(name,age,grade)  
    {  
        Person.apply(this,arguments);  //(1)
        this.grade=grade;  
    }  
    //         
    var student=new Student("qian",21,"   ");  
    //    
    alert("name:"+student.name+"
    "+"age:"+student.age+"
    "+"grade:"+student.grade); // name:qian age:21 grade:
    (1)argmentsは、本関数のパラメータとPersonのパラメータを逐次対応させ、割当を完了することを表す。
    1.4.concat関数
    [].concat(arrayX,arrayX,......,arrayX)
    
    2.Gmkt-potal-webにおけるJSコード組織構造
    2.1.サーバデータ取得
    js/services/*
    2.2.モジュールデータ定義
    js/controllers/*base*.js js/services/data-types.js
    2.3.モジュールページコントローラ
    js/controllers/*/*
    2.4.ビューとモデル
    を選択します。
    2.5.vm変数の使用
    イメージ通り、ユーザーがページを切り替えた場合、新しいページ対応コントローラの変数を取得しますか?
  • は、新しいページに対応するコントローラを使用してアクセスします。例えば、AControllerに切り替えて、a変数にアクセスするときは、AController.aを使います。
  • は、スイッチング動作が発生したときに、コントローラを変数cに統一的に与え、a変数にアクセスするときは、c.aを用いる。方法の比較:個人は第2種がいったん切り替えたらと感じて、知らない要素が失敗を招いた後に、vmは秩序を乱して、全体のページの誤りを招いて、その上統一してvmを使って、1つの追加の理解のコストがあって、多くなった後に混淆します。第一種類のものがオススメです。しかし、私たちのプロジェクトには第二の種類が使われています。
  • です。
    .state('activity.enrollment', {
                    url: '/enrollment',
                    views: {
                        'content@activity': {
                            templateUrl: '/pages/enrollment/list.html',
                            controller: 'EnrollmentListCtrl',
                            controllerAs: 'vm'
                        }
                    },
                    ncyBreadcrumb: {
                        label: '      '
                    }
                })
    
    上記の文法の意味は、ページが/enrollmentに向けられた時に、Erollment ListCtrlコントローラをvmに割り当て、vm.xxxを使ってErollmentListCtrlコントローラで定義されている変数にアクセスできるということです。
    3.具体的な変更の注意点
    3.1予算なし活動ブロックを追加
  • enroll-deall.の中に
    , [31,35] , , 。
  • task-types.js else if (type >=31 && type <=35) return this.FreeEntertainment;という があります。[31,35] の タイプを して、Free Entertainment の タイプを います。
  • 3.2 ( !)

    js/controllers/submit/base.js

            this.$scope.poiMainCategories = []; // POI    
            this.$scope.poiSubCategories =[]; // POI      
            this.$scope.currentPoiSubCategories = [];//   POI     
    

    js/controllers/submit/base.js

    getCategories: function () {
        var self = this;
        self.SubmitService.getCategories().then(function (data) {
            
            ...
            
            //  POI          
            for(var p = 0;  p < data.poiMainCategories.length; p++)
            {
                var data_item = data.poiMainCategories[p];
                var local_item = {
                        code: data_item.code,
                        desc: data_item.desc
                }; 
                self.$scope.poiMainCategories.push(local_item); 
                self.$scope.poiSubCategories[data_item.code]= data_item.subCategories;
            } 
            self.$scope.currentPoiSubCategories = [];
            
            ...
        });
    }
    

    js/services/submit.js:

    getCategories: function () {
        return $http.get('/submit/getCategories')
    },
    

    SubmitController:JAVA

    @RequestMapping("getCategories")
    @ResponseBody
    public SalesPortalResponse getCategories() { 
        return SalesPortalResponse.success(submitEnrollmentService.getCategoriesAllInOne());
    }
    

    getCategoriesAllInOne() ( ) :

     public CategoriesAllInOne getCategoriesAllInOne()
    {
        CategoriesAllInOne result = new CategoriesAllInOne();
        ...
        
        List poiSubCategories1 = new ArrayList();
        poiSubCategories1.add(new CategoryItem(0,"POI   -1-1"));
        poiSubCategories1.add(new CategoryItem(1,"POI   -1-2"));
        
        List poiSubCategories2 = new ArrayList();
        poiSubCategories2.add(new CategoryItem(0,"POI   -2-1"));
        poiSubCategories2.add(new CategoryItem(1,"POI   -2-2"));
        
        List poiMainCategories = new ArrayList();
        poiMainCategories.add(new CategoryData(0,"POI   -1",subCategories1));
        poiMainCategories.add(new CategoryData(1,"POI   -2",subCategories2));  
        result.setPoiMainCategories(poiMainCategories);
        ...
         
        return result;
    } 
    

    submit-rule-config.html:

     
    POI : {{$select.selected.desc}} {{$select.selected.desc}}

    js/controllers/submit/base.js:

       this.$scope.changePoiSubCategory = function () {
                self.$scope.currentPoiSubCategories = self.$scope.poiSubCategories[self.$scope.tuangouSubmitRule.poiMainCategory.code];
            };
    
    <!-- ページ- の のビット->