javascript - AngularJS中具有多个参数的查询字符串

标签 javascript angularjs meanjs

我尝试在 MEANJS 应用程序中生成查询字符串。查询字符串应该包含多个可以通过 ng-click 更改的参数。当我尝试连接查询的不同参数时,我遇到了一些问题,这是我到目前为止所做的。

    <md-list layout="column" layout-align="center" flex="100" ng-cloak>

  <!-- syllableCount -->
  <md-list-item>
    <label flex="20">Silbenanzahl</label>
      <md-button type="button" class="btn btn-sm min-width-45"
        ng-click="searchSpec('syllableCount=1')">1
      </md-button>
      <md-button type="button" class="btn btn-sm min-width-45"
        ng-click="searchSpec('syllableCount=2')">2
      </md-button>
      <md-button type="button" class="btn btn-sm min-width-45"
        ng-click="searchSpec('syllableCount=3')">3
      </md-button>
      <md-button type="button" class="btn btn-sm min-width-45"
        ng-click="searchSpec('syllableCount=4')">4
      </md-button>
  <md-divider ng-if="!$last"></md-divider>
</md-list-item>
<!-- end -->

  <!-- syllableStructur -->
  <md-list-item>
    <label flex="20">Silbenstruktur</label>
      <md-button type="button" class="btn btn-sm min-width-45"
        ng-click="searchSpec('syllableStructur=einfach')">einfach
      </md-button>
      <md-button type="button" class="btn btn-sm min-width-45"
        ng-click="searchSpec('syllableStructur=komplex')">komplex
      </md-button>
  <md-divider ng-if="!$last"></md-divider>
</md-list-item>
<!-- end -->

我为 searchSpec 函数的两个列表项实现了 ng-click。参数(例如“syllableCount=2”)应进入 Controller 文件中的查询字符串:

    $scope.searchSpec = function(attr) {
     var result = $http.get('/api/words/?' + attr)
     .success(function(result) {
       $scope.searchWords = result; // will be used for ng-repeat
       console.log($scope.searchWords);
       console.log(attr);
  });
};

目前它工作正常,如果我单击某个按钮,则会建立正确的查询,并且输出(在本例中)是音节数为 1,2,3 或 4 的单词列表,或者带有einfach(简单)或 komplex(复杂)的音节结构。

我的目标是我可以有一个单词列表,比如 syllableCount 2 和 einfach 的 syllableStructure(简单)。

我为此尝试的是:

    $scope.searchCount = function(attr) {
     $scope.count = attr;
    };

    $scope.searchStruct = function(attr) {
     $scope.struct = attr;
    };

$scope.searchSpec = function(attr) {
  var result = $http.get('/api/words/?syllableCount=' + $scope.count + '&' + 'syllableStructur=' + $scope.struct)
  .success(function(result) {
    $scope.searchWords = result;
    console.log($scope.searchWords);
    console.log(attr);
  });
};

这两个新函数在 html 中从按钮调用,我尝试将结果连接到一个字符串。然而它没有起作用。它没有显示结果(count=2 AND struct=einfach)如果我像这样硬编码输入:var result = $http.get('/api/words/?syllableCount=' + 2 + '& ' + 'syllableStructur=' + einfach) 工作正常。

这是正确的方法,还是我错了?

最佳答案

在我看来,每次进行 http 调用(即每次点击)时,您都会重置 $scope.searchwords 对象(searchSpec 函数被调用)。

什么是$scope.searchWords?如果您想根据点击继续向其添加数据,您最好创建一个数组并推送到它,即

$scope.searchSpec = function(attr) {
  var result = $http.get('/api/words/?syllableCount=' + $scope.count + '&' + 'syllableStructur=' + $scope.struct)
  .success(function(result) {
    $scope.searchWords.push(result.data);
  });
};

只要确保每次获得结果时不要重新分配 $scope.whatever 对象。

$scope.searchSpec = function(attr) {
  var result = $http.get('/api/words/?syllableCount=' + $scope.count + '&' + 'syllableStructur=' + $scope.struct)
  .success(function(result) {
    $scope[attr].push(result.data);
  });
};

关于javascript - AngularJS中具有多个参数的查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37359588/

相关文章:

javascript - 修改 find() 以包含参数

javascript - D3 与 Angular-cli

javascript - Node.js 应用程序在运行循环一段时间后停止

javascript - 将服务注入(inject) Controller 时获取 "Unknown Provider"

javascript - 如何在 NodeWebkit 的 html 代码中访问从 Node 模块抓取的数据

angularjs - 在 meanjs 中注入(inject)自定义模块的最佳实践

javascript - 如何在谷歌分析请求中指定最大搜索记录

javascript - 调用 onclick 函数时显示 2 个及更多字符

javascript - AngularJS 在新页面中显示 1 篇帖子

html - 如果某些行值在 Angularjs 中不可用,我如何求和列值的总和?