将参数传递给Onsen服务

时间:2014-11-24 19:21:11

标签: angularjs onsen-ui

我显然缺少一些基本的onsen / angular,但我不清楚如何将参数传递给查询数据库的服务。当我对查询进行硬编码而不是使用'id'参数时,这一切都很好:

.factory('Inscription', function(DB) {
    var self = this;

    self.all = function(id) {
            return DB.query('SELECT * FROM inscription where project_id = ? limit 100', [3])
            .then(function(result){
                    return DB.fetchAll(result);
            });
    };

但我不确定如何动态地将id参数传递给此查询。相关的控制器代码是:

.controller('InscriptionsCtrl', function($scope, Inscription) {
    $scope.inscriptions = [];
    $scope.inscription = null;
    // Get all the project inscriptions
    Inscription.all().then(function(inscriptions) {
            $scope.inscriptions = inscriptions;
    });

在列表中使用:

 <ons-template id="showProject.html">
   <ons-page>
      <ons-list ng-controller="InscriptionsCtrl">
        <ons-list-item ng-repeat="inscription in inscriptions" ng-click="navi.pushPage('showInscription.html')">
            {{inscription.title}} - {{inscription.description | limitTo:50}}...
        </ons-list-item>
      </ons-list>
   </ons-page>
 </ons-template>

带有列表的页面正在传递要在数据库查询中使用的项目ID:

$ scope.ons.navigator.pushPage('showProject.html',{project_id:id});

我只是不确定如何将该ID传递给控制器​​以形成正确的查询。

1 个答案:

答案 0 :(得分:0)

推送页面时使用的参数将绑定到页面对象。

在推送页面的控制器中,您可以执行以下操作:

var id = myNavigator.getCurrentPage().options.project_id;

Inscription.all(id).then(function(result) ...