新页面上未显示数据
Data not showing on new page
我创建了一个web服务,它有两个方法,常规方法和详细方法。"常规"显示基本数据,而"详细信息"提供所选对象的进一步详细信息。我发现在加载显示详细信息的新页面时遇到困难。
这些是我创建的角度方法。
var app = angular.module("myModule", .....);
var app = angular.module("myModule2", [])
.controller("myController2", function ($scope, $http) {
$scope.test = "DetailsScript";
//method to get booking by reference start
$scope.getReference = function (Reference) {
$http({
method: 'GET',
url: 'http://localhost:3466/MyWebService.asmx/DashboardDetail',
params: {
Reference: Reference
}
}).then(function (response) {
$scope.booking = response.data
});
};
//method to get booking by reference end
//method to load page start
$scope.loadView = function (ref) {
var url = 'DetailsPage.html';
$scope.getReference(ref);
window.location(url);
};
//method to load page end
});
angular.module("CombineModule", ["myModule", "myModule2"]);
当我点击以下按钮时,我似乎无法获得进入新页面的详细信息:
<input id="refBox" type="text" ng-model="Reference" ng-change="getReference(Reference)" />
<br />
<input type="button" ng-click="loadView(Reference)" />
ng-click只是在没有加载新数据的情况下将我带到新页面。
我的web服务被正确调用并返回正确的Context.Response.Write(javascriptserializer.Serialize(myObject));
可能有两个问题:页面是在数据返回之前加载和显示的,因为它是异步的,如果是这种情况,为什么?当loadView调用具有.then函数的getReference时?
附言:我刚接触angularjs。
角度不是这样工作的。angular背后的一般概念是你的
- 加载页面(应用程序)
- 加载该页面上应显示的所有数据
- 在视图上显示数据
因此,您的方法的问题是,您正在加载数据,然后离开应用程序(通过转到DetailsPage.html)。您不会这样做。
如果你想显示详细信息页面,你应该看看ngRoute。
好的,您提供的示例存在一些问题。
首先,在中将两个不同的模块分配给同一个var
var app = angular.module("myModule", ...
和
var app = angular.module("myModule2",...
在给定的例子中,这似乎并不重要,但可能是一个问题。
其次,在视图逻辑中定义应用程序逻辑。尽管angular不能强制您使用MVC模式,但请注意,控制器应该是视图(HTML)和应用程序逻辑(服务)之间的"桥梁"。因此,您应该在服务中实现"getReference"方法。
正如Angular指南中所写的,服务是单一的,具有应用程序生命周期,而控制器具有视图生命周期,它们应该处理应用程序逻辑和/或与服务器的通信。换句话说,当应用程序存在时,服务存在,当加载视图时,控制器将可用。
同样,这不是关键,只要这只是一个测试,并且绝对不应该投入生产。保持也是一种痛苦
请注意,当我说"应用程序逻辑"时,它是可以转到客户端的逻辑。你的产品逻辑应该由服务器强制执行,但有时你想在客户端中复制它,这就是你使用服务的地方
第三,正如许多人告诉你的那样,你应该检查ngRoute模块。这是一个本机模块,如果我正确理解你的问题,它将解决你的问题并做loadView
应该做的事情。
你会得到这样的东西:
var someModule = angular.module('someModule', ['ngRoute']);
someModule.config(["$routeProvider", function($routeProvider){
$routeProvider
.when('/', {
templateUrl: '/path/to/index.html',
})
.when('/some/route/:id/', {
templateUrl: "/path/to/some/route.html",
controller: "SomeController"
})
.when('/some/route/:id/details/', {
templateUrl: "/path/to/some/route.html",
controller: "SomeDetailsController"
})
.when('/another/route/', {
templateUrl: "/path/to/another/route.html",
controller: "AnotherController"
});
}]);
someModule.controller('SomeController', ['$scope', '$routeParams', function($scope, $routeParams){
//Using routeParams, you can get information from the route
//For instance, if you want the get details from a book with id "abc123"
//Then when the route '/some/route/abc123/' is accessed, 'abc123' will be available
//through $routeParams
$scope.id = $routeParams.id;
//$scope.id = 'abc123'
}]);
someModule.controller('SomeDetailsController', ['$scope', function($scope){
//do stuff
}]);
someModule.controller('AnotherController', ['$scope', function($scope){
//do stuff
}]);
这样,就像在SomeController1
中一样,您可以获得图书的id,并使用服务从服务器获取。
请注意,当您从/some/route/abc123/
转到/some/route/abc123/details/
时,第一个(SomeController
)的控制器将被销毁,第二个(SomeDetailsController
)的控制器也将被创建。这就是我所说的"查看生命周期",这就是为什么你应该在服务中实现应用程序逻辑的原因,因为它将在这个过渡期间可用。
希望能有所帮助。祝你好运
- 如何将json数据显示为html
- 解耦按钮(两个按钮同时切换),并根据数据显示相应的按钮
- 将json提要数据显示为html
- 使用Ajax Get方法将数据显示到特定元素中
- 如何将数据显示为线性highChart
- Json显示来自网站的数据显示仅未定义
- 使 ajax 请求和成功数据显示在 id <选择>选择>部分中
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 如何在循环中将 json 数据显示为 HTML
- 如何使用javascript在html中将firebase数据显示为列表
- PHP同时循环数组数据显示到javascript中
- 原始图像数据显示
- 如何在 y 轴上将数据显示为 KB、MB、GB、TB
- Ajax 数据显示在包含 10 行的表中
- 如何让 Mathjax.js 与 ANCII.js 将附加的 json 数据显示为正确的公式
- 调用 Worklight 适配器并将列表视图中的 JSON 数据显示为字符串
- Jquery/Javascript Datatables : 如何在行选择时将行数据显示到 html 文本字段中
- 双击 td 时,如何在警告框中将数据库中的数据显示为 html 表
- 日期之间的数据显示所有头
- 如何使用模板中的数据显示谷歌地图