Angularjs 角Js工厂
我有一个工厂的工作版本Angularjs 角Js工厂,angularjs,factory,angularjs-factory,Angularjs,Factory,Angularjs Factory,我有一个工厂的工作版本 function queryStaticDatabase (filterCondition, url, callback) { // should make server REST call in real scenario console.log(filterCondition); var recordsPerPage = filterCondition.recordsPerPage; var pageNumber = filterConditi
function queryStaticDatabase (filterCondition, url, callback)
{ // should make server REST call in real scenario
console.log(filterCondition);
var recordsPerPage = filterCondition.recordsPerPage;
var pageNumber = filterCondition.pageNumber;
$http.get(url).success(function (data) {
console.log(data);
callback({ // ajax callback in real scenario
totalRecordsCount: totalRecordsCount,
records: filteredData
});
});
}
return {
query: queryStaticDatabase
}
我试着用下面的方法修改代码
var query =
function (filterCondition, url, callback) { // should make server REST call in real scenario
console.log(filterCondition);
var recordsPerPage = filterCondition.recordsPerPage;
var pageNumber = filterCondition.pageNumber;
$http.get(url).success(function (data) {
callback({ // ajax callback in real scenario
totalRecordsCount: totalRecordsCount,
records: filteredData
});
});
};
return (query);
});
尽管它在语法上看起来是正确的。改造后的工厂不工作。我是AngularJs的新手,请帮我解决这个问题。如果您没有改变在控制器中使用factory的方式,那么返回对象结构是不同的 在第一个版本中,您返回一个具有属性
query
的对象,因此可以使用myFactory.query()
在第二种情况下,您只返回函数,使其在控制器中成为myFactory()
如果您希望控制器中的内容相同,则需要进行更改
return (query);
到
通过返回带有属性的对象,您可以在以后向factory添加属性,而无需更改控制器中的任何内容,而现在更改控制器以仅查看函数将不会使其在将来易于扩展。谢谢,成功了。更多的是理解。我还有一个问题。正如您所解释的,在第二个版本中,我将返回函数。根据工厂的定义,它听起来很完美。但是对于您提到的第一点,我将返回一个具有属性查询的对象。。你能解释一下吗。我是新手,希望能更好地理解它Object literal==>
{propertyName:value}
。这是因为它可以在不影响代码的情况下添加属性,谢谢。还有一件事我不能清楚地理解,从c#的角度来看,我们不需要直接调用queryStaticDatabase,而是需要使用这种按属性调用的方法。有没有一篇好文章可以让我阅读并理解它?因为继承对不起,查理。我不明白你的意思:(
return{
query : query
}