角度对象在第二次加载后绑定,我该如何解决?

时间:2014-03-21 14:33:11

标签: javascript php jquery mysql angularjs

你好我对角度很新。 我希望你能帮助我。

我正在使用angular,PHP和MySQL创建一个库存管理器。在某些时候,我需要查阅数据库表中的所有元素。我想使用angular。将这些结果直接绑定到浏览器视图。

要做到这一点,我会触发一个角度函数,该函数要求PHP隐藏文件在关联数组中从MySQL中检索结果。

这是我的index.php。

<a ng-click='shw("material")' href=''>Materiales</a>

这是我的角度函数

$scope.shw = function(pointer){
                      $.post(
                              'phpdep/arequest.php',
                      {
                              varPage:pointer,
                              show:"show"
                      },
                      function(data){
                              $('#ajaxreq').html(data);
                      }
              );

}

在我的arequest.php中我有

    if($_POST['show']=='show'){
      $result = material::selectMaterial($_POST['varPage'],"n");
      $result = json_encode($result);?>
      <script type='text/javascript'>
              angular.element($('#cont')).scope().fillerq('<? echo $_POST['varPage']?>',<? echo $result?>);
      </script>
  

我必须说我知道在php文件中间插入一个脚本不是最好的做法,但现在这对我有用(如果你有任何建议我会很高兴得到它)。

$ result是一个关联数组,其中包含我想要检索的所有数据。

然后我有这个fillerq()角度函数,它用JSONED对象填充角度对象(填充符),该对象带有来自我的数据库的数据。

             $scope.filler = {};
             $scope.ftittle = {};
             $scope.fillerq = function(keyword, dataArray){
             var i=0;
                     $scope.filler = dataArray;
                     angular.forEach(dataArray, function(value, key){
                             angular.forEach(value, function(nval, nkey){
                                     $scope.ftittle[nkey] = nkey;
                             });
                     });
            };

此时一切正常。问题是当我尝试通过ng-repeat显示这个填充对象时。当我在第二次点击时点击“Materiales”链接时显示它。

<table class="displayElements">
  <tr>
  <td ng-repeat="key in notSorted(ftittle)">{{ftittle[key]}}</td><tr>
  <tr ng-repeat="val in filler">
  <td ng-repeat="key in notSorted(val)" ng-show="!$last">{{val[key]}}</span>
  </td></tr>

我想让它在第一次点击时显示,而不是在第二次点击时显示。

0 个答案:

没有答案