Pra*_*n D 5 javascript jquery angularjs
我想把参数发送到服务功能.
getQuestions:function(stateCode):questionResource.js
stateCode在dtoResource.rc1Step1DTO()的响应中设置在$ scope中
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);
});
}])
Run Code Online (Sandbox Code Playgroud)
如何将状态代码传递给其他函数.它在范围上的地位是
$scope.postAutoQuoteObj.SessionInfo.StateCode
Run Code Online (Sandbox Code Playgroud)
以下是代码http://plnkr.co/edit/Op1QDwUBECAosPUC7r3N?p=preview的plunker
您的模块 autoQuote.run() 在应用程序加载期间只会被调用一次。所以不要指望它会再次执行。
你已经接近正确答案了。你只需要做一些重组。我要提供的一个技巧是担心稍后创建指令,首先让控制器、路由首先工作。您已经创建了一个出色的框架来开始。你正在使用 ui-router。这意味着您可以告诉 ui-router 在请求状态时要执行哪个控制器。所以您的应用程序的生命周期如下
module.run //首先这里的任何代码。仅在初始加载 module.config //在您的情况下 app.config 创建您的状态。
然后根据 url 您正在查看的状态;该状态(或视图)的控制器将被执行
因此,如果您为 / 添加另一个状态配置,您可以将该状态绑定到您的 autoQuoteCtrl。
此外,还有许多其他问题,例如尝试在输入元素中使用 ng-model 和值。这是不正确的。
你没有实现你的用户界面视图。这将意味着您的控制器将永远不会执行。从技术上讲,如果你的情况 autoQuoteCtrl 会被执行,但这只是因为你使用 ng-controller 将其强制到页面上,而这正是 ui-router 旨在避免的。
我认为这就是为什么你最终将代码放在 .run() 中。这是您发现您的应用程序会在页面加载时“运行”代码的唯一地方,这是错误的,它只是因为您的应用程序加载而运行。抱歉,如果我是多余的。但这是重要的一点。
此外,您尝试通过将状态代码传递给您的资源来访问您的 json 数据。$resource 不是这样工作的。您传递资源的名称,它将返回该资源的所有内容。然后在返回承诺后过滤代码。你只有一种资源。即“CA.json”,因此您应该能够只使用资源服务中的一行,并且只需要一项资源服务。您将需要额外的非资源服务来完成从 JSON 中筛选出正确数据的繁重工作。通常,这就是应用程序调用不同资源的原因,以便每个资源返回所需的模型,而不是单个单一资源。
并且你永远不应该使用document.getElementById()你正在使用的角度,所以你不会直接与dom交互
最后,这里有一个经过多次修改的 plunkr,可以帮助指导您走向正确的方向。
http://plnkr.co/edit/dUJm01uu7RnhltC2pLLb?p=preview
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |