我想将参数发送到服务功能。
getQuestions:function(stateCode):questionResource.js
stateCode在$ scope中设置,来自dtoResource.rc1Step1DTO()的响应
angular
.module('autoQuote')
//Do initalization on page load
.run(['$log', '$rootScope', '$state', 'dtoResource', 'questionResource', function($log, $rootScope, $state, dtoResource, questionResource) {
$log.info('Post DTO on page load.');
dtoResource.rc1Step1DTO()
.then(questionResource.getQuestions)
.then(function(questions) {
$rootScope.questions = questions;
console.log('Obtained questions. Assigned to rootscope');
})
.then(function() {
console.log('This should be printed after the above methods are done executing');
console.log($rootScope);
});
}])
如何将状态代码传递给另一个函数。 它在范围上的位置是
$scope.postAutoQuoteObj.SessionInfo.StateCode
以下是代码的plunker http://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview
答案 0 :(得分:0)
你的模块autoQuote.run()只会在你的应用程序加载过程中被调用一次。所以不要指望它再次执行。
你接近正确的答案。你只需要做一些重组。我提供的一个提示是担心稍后创建一个指令,首先获取控制器,路由首先工作。 您已经创建了一个出色的框架。你正在使用ui-router。 这意味着您可以告诉ui-router在请求状态时要执行哪个控制器。所以申请的生命周期如下
module.run //首先是这里的任何代码。仅限于初始负载 module.config //在你的案例app.config中创建你的状态。
然后根据网址确定您正在查看的状态; 将执行该状态(或视图)的控制器
所以如果你为/添加另一个状态配置,你可以将该状态绑定到你的autoQuoteCtrl。
此外,还有许多其他问题,例如尝试在输入元素中使用ng-model和value。这是不正确的。
你没有实现你的ui-views。这意味着您的控制器永远不会执行。从技术上讲,你的情况是autoQuoteCtrl会被执行但只是因为你使用ng-controller强制它进入页面,这就是ui-router旨在避免的。
我认为你最终将代码放在.run()中。这是您发现应用程序在页面加载时“运行”代码的唯一地方,这是错误的,它只是因为您的应用程序已加载而运行。对不起,如果我是多余的。但这是重要的一点。
此外,您正尝试通过将状态代码传递给资源来访问您的json数据。这不是$资源的运作方式。您传递资源的名称,它将返回该资源的所有内容。然后在返回promise后过滤代码。你只有一个资源。那就是“CA.json”,因此您应该能够在资源服务中只使用一行并且只需要一个资源服务。您将需要其他非资源服务,这些服务可以解除从JSON中过滤掉正确数据的问题。通常这就是应用程序调用不同资源的原因,以便每个人都返回所需的模型,而不是单个整体资源。
并且你永远不应该使用document.getElementById()
你正在使用角度,所以你不直接与dom交互
最后,这里有一个经过大量修改的插件,可以帮助您指导正确的方向。