我正在尝试使用带有自定义属性的自定义Angular指令,即:filterBy=:filter
。这是通过这样的自定义指令完成的:
<foo filterBy=location filter=ABC></foo>
服务:
function Foo($resource) {
return $resource(base + 'Foo');
}
ngResource电话:
var filterBy = attrs.filterBy;
var getSegments = Foo.get({filterBy: attrs.filter, limit: attrs.limit, offset: attrs.offset});
返回:
http://localhost:8000/base/Foo?filterBy=ABC&limit=30(注意它说“filterBy”而不是位置“)
它应该返回此资源: http://localhost:8000/base/Foo?locations=Bar&limit=30
似乎filterBy
在ngResource调用中变成了一个字符串。我不想使用attrs.filterBy的值,但它不喜欢参数值中的点表示法。
我也试过这个:
var getFilter = function() {
return attrs.filterBy;
};
但是当我这样做时,资源URL变为:
http://localhost:8000/base/Foo?getFilter=Bar&limit=30
请注意,“getFilter”现在是参数。那么有没有办法创建自定义参数?
答案 0 :(得分:0)
var filterBy = attrs.filterBy;
var params = {limit: attrs.limit, offset: attrs.offset};
params[filterBy] = attrs.filter;
var getSegments = Foo.get(params);
当你写filterBy: value
时,filterBy
是一个标识符。这是静态的。它与任何变量都没有任何关系。
params[filterBy] = attrs.filter;
动态添加属性,括号内的值是可以解析为字符串的表达式。所以它可以是变量。