angularjs 1.5服务未触发

时间:2016-12-18 17:28:15

标签: javascript angularjs service getter-setter route-provider

我在view1中有一个表单,有多个输入字段。按钮提交成功发布数据(存储在数据库中),但控制器(ListController)似乎没有成功调用服务的getter。

在view2中,调用job或' summaryService.job'时,不会显示任何内容。 - 甚至没有" undefined"最初在服务中声明。

我在app.js中使用routeProvider函数 - 这可能会干扰调用服务和控制器吗?其余的控制器工作正常 - 只是控制器和服务之间的通信。 或者是ng-click不是触发setter服务的好方法吗?

厂景:

<form name="campaignForm1" action="#/setup-step2" ng-submit="setJobtitle(campaign.jobtitle); submitForm(campaign);">
<table>
 <tr>
  <td>Job title: </td>
  <td><input type="text" name="jobtitle" ng-model="campaign.jobtitle"></td>
 </tr>
 <tr>
  <td>ID: </td>
  <td><input type="text" name="id" ng-model="campaign.vacancyid"></td>
 </tr>
</table>
<button ng-click="setJobtitle(campaign.jobtitle); submitForm(campaign)" > Proceed </button>

控制器视图1:

ctr.controller('Step1Controller',
    ['$scope', '$routeParams', '$http', '$location', 'summaryService' function($scope, $routeParams, $http, $location, summaryService)
                {
                    $scope.setJobtitle = function(jobtitle) {
                        summaryService.setJobtitle(jobtitle);
                    };
    ]);

service summaryService:

app.service('summaryService', function() {

this.job = "undefined";  
return {
    getJobtitle: function() {
       return this.job;
   },
   setJobtitle: function(value) {
       this.job = value
   }
};
});
无论我是拨打{{job}}还是{{summaryService.getJobtitle()}}

查看2都不显示任何内容。

控制器视图2:

ctr.controller('ListController',
    ['$scope', 'Test', 'summaryService', function ($scope, Test, summaryService)
                    { 
                        $scope.job = summaryService.getJobtitle();
}]);

我怀疑从控制器中传递和调用值有什么问题吗?

Git link https://github.com/2dorian/cmx

1 个答案:

答案 0 :(得分:0)

在你的示例this里面,getJobtitle引用了返回的对象,以便解决这个问题:

1

app.service('summaryService', function() {
this.job = "undefined";  
this.getJobtitle = function() {
       return this.job;
};
this.setJobtitle = function(value) {
       this.job = value
 };
});

2

app.service('summaryService', function() {
return {
  job: "undefined",  
  getJobtitle: function() {
       return this.job;
  },
  setJobtitle: function(value) {
       this.job = value
  }
};
});

有关codepen的工作示例 - http://codepen.io/maksimr/pen/oYmjmB