Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角Js工厂_Angularjs_Factory_Angularjs Factory - Fatal编程技术网

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
}