在javascript / backbone中初始化模型元素

时间:2016-08-05 19:28:58

标签: javascript jquery backbone.js

我从REST获取嵌套的JSON数据。现在我想在变量中捕获该值。一切正常,但我不知道应该如何初始化该变量。

所以这是我的Model的初始化方法。

   include_once "DataBase/db.php";

            if($internet->num_rows != 0){
                    while($rows = $internet->fetch_assoc()){
                        $nom = $rows["nom"];
                        $id = $rows["id"];
                        $tech = $rows["technologie"];
                        $telechargement = $rows["telechargement"];
                        $televersement = $rows["televersement"];
                        $utilisation = $rows["utilisation"];
                        $prix= $rows["prix"];

                       echo '
           <form method="POST" action="Fournisseurs/Videotron.php" id="'.$id.'">

              <div class="boxes">
               <div class="[ price-option price-option--high ]">
                <div class="price-option__detail">
                   <span class="price-option__cost">'.$nom.'<br>$'.$prix.'</span>
                    </div>

                     <input type="hidden" name="id" value="'.$id.'"></input>
                     <input type="hidden" name="nom" value="'.$nom.'"></input>
                     <input type="hidden" name="tech" value="'.$tech.'"></input>
                     <input type="hidden" name="telechargement" value="'.$telechargement.'"></input>
                     <input type="hidden" name="televersement" value="'.$televersement.'"></input>
                     <input type="hidden" name="utilisation" value="'.$utilisation.'"></input>
                     <input type="hidden" name="prix" value="'.$prix.'"></input>

                       <div class="price-option__purchase">
                         <a href="javascript:document.getElementById('.$id.').submit();"> Submit </a>
                       </div>
                        </div>
                        </div>
                    ';
                           }
        }

AJAX CALL:

initialize: function() {
        var self = this;
        if (!this.get('dropdownData')) {
                this.set({
                    dropdownData: []
                });
            }
        }
}

现在fetchDropdown: function(data) { var self = this; var d = $.Deferred(); var dropdownRequest = $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", dataType: "json", url: this.urlRoot, data: JSON.stringify(data) }); dropdownRequest.done(function(data) { self.set({ dropdownData: data }); console.log("JSON SUCCESS!! YAY!!"); d.resolve(); }); 应初始化为dropdownData,否则我根本不需要初始化它。

P.S:逻辑明智的代码片段正在运行。我只是想知道在dropdownData: {} or dropdownData: []

dropdownData函数初始化initialize的正确方法是什么

1 个答案:

答案 0 :(得分:1)

我建议完全避免在dropdownData方法中初始化initialize,而是在此处使用model.defaults。如果将以下内容添加到模型定义中:

defaults: function () {
  return {
    dropdownData: []
  };
},

...然后您可以删除initialize方法正文中的所有代码。此更改的结果将是实例化模型将具有dropdownData 的提供值(在实例化时),模型将默认为指定的空数组。

请注意,在此处使用defaults的功能版本非常重要。如果你这样做:

defaults: {
  dropdownData: []
},

...然后,未提供dropdownData 值的任何实例化模型将共享dropdownData的值。每个实例都会引用完全相同的数组。