我在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
答案 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