AngularJS,创建一个资源哈希
AngularJS, creating a resource hash
尝试获取网址并在AngularJS控制器中将该请求重定向到获取json数据的最佳位置。VideoSearchCtrl绑定到搜索表单。生成的 url 对于模板是正确的,因此我使用控制器将其重定向到 json 数据的位置。
GuideControllers.controller('VideoSearchCtrl', ['$scope', 'VideoSearch',
function($scope, VideoSearch) {
var pattern = new RegExp(".*/search''?=(.*)");
var params = pattern.exec( document.URL )[1];//redirect to videos to execute the search for the data
$scope.videos = VideoSearch.query({ resource: "videos", action: "search", q: params });
}
]);
这会将/videos/search?q=xyz 发送到查询。工厂创建资源:
var VideoSearchServices = angular.module('VideoSearchServices', ['ngResource']);
VideoSearchServices.factory('VideoSearch', ['$resource',
function($resource){
return $resource("/:resource/:action:params", {resource: "@resource", action: "@action", params: "@params"}, {
query: {
isArray: true,
method: "GET",
headers: {
"Accept": "application/json",
"X-Requested-With": "XMLHttpRequest"
}
}
});
}
]);
但是服务器获取的网址是/videos/search%fq=xyz,而不是/videos/search?q=xyz,因此调用"show"方法而不是自定义的"搜索"操作。 显然在某个地方有一些逃逸?或者,"?"也是资源工厂寻找的特殊模式?对于习惯于AngularJS或javascript的人来说,这可能是显而易见的。
我有一个用于搜索的模板,并且从其他位置检索了 json。两者都有效,但我不能要求使用上述代码的 json。
首先,做:
return $resource("/:resource/:action", {resource: "@resource", action: "@action"}, {
然后:
$scope.videos = VideoSearch.query({ resource: "videos", action: "search", q: params });
关键是params
不是您必须向资源声明的 url 的一部分,您只需声明resource
然后action
然后添加参数,这对于所有路由都是自然
实际上,有一种更好的方法可以使用来自Angular和jQuery扩展的$location来做到这一点,它应该适用于任何未来添加的参数。只需将新参数添加到查询工厂。
GuideControllers.controller('VideoSearchCtrl', ['$scope', '$location', 'VideoSearch',
function($scope, $location, VideoSearch) {
var route = jQuery.extend(
{ resource: "videos", action: 'search' },
$location.search()
);
$scope.videos = VideoSearch.query(route);
}
]);
相关文章:
- WebResources嵌入式资源和Javascript如何在另一个嵌入式资源中使用它们
- AngularJS多资源调用,只处理最后一个
- 检查资源的id是否在ng重复中显示的另一个资源的id列表中
- 关于如何使用BusterJs资源配置选项的一个好例子
- 完整日历在多个资源上添加一个事件
- 给定一个 url,脚本如何找到加载的资源
- 我得到了一个“;未能加载资源“;在尝试运行空白离子启动器应用程序时出现Cordova错误
- 如何使用Angular 2服务提供包含指向另一个资源的链接/ids的资源集合
- 是否有任何事件在浏览器请求另一个资源(如图像)之前触发
- 从另一个域加载 CSS 和 JS 文件,并从一致的 URL 提供资源
- AngularJS,创建一个资源哈希
- 一个简单窗口的计算资源密集度.包含函数
- Angularjs资源错误:a.push不是一个函数
- 一个程序PhantomJS如何等待AngularJS$资源解析,然后再尝试测试返回的数据
- 从另一个javascript网络资源调用javascript函数
- servlet过滤器中的静态资源版本控制(添加一个额外的GET参数)
- Javascript' setInterval循环是一个资源消耗者吗?
- 如何在iOS cordova项目中从objective C返回一个资源url到javascript
- 用ngResource、socket维护一个资源集合.IO和$q
- 如何在angularjs中传递一个JSON对象给一个资源