javascript - Angularjs 工厂返回什么?

标签 javascript angularjs angularjs-service

我无法理解工厂如何返回自身的对象。例如:

var myapp = angular.module('myapp',[]);
myapp.factory('myfactory',function(){


     var foo = {};
     factory.message = function(){

         //do something

      }


     return foo;

 });

现在,我可以从我的 Controller 调用这个工厂的方法,例如 myfactory.message 但是工厂构造函数如何返回它自己的对象。它与 Angular 的工厂实现有关吗?还是我在这里缺少一些 javascript 基础知识?

最佳答案

这是纯 JavaScript 功能。

正在创建一个新的空文字对象,称为“工厂”,它是一个不同的对象。 “var factory = {}”行是创建对象的内容。从那里您可以在这个新对象上添加函数(方法),例如“信息”。

我有一段时间没有使用 Angular,但它为你做的唯一一件事就是将这个新返回的对象分配给你指定的名称“myfactory”

事实上,变量在函数内部被命名为工厂,这一事实可能会让您感到困惑。名称可以是“foo”或“builder”之类的任何名称,并且它们的工作方式相同。

为了回应您的最后评论,请参阅下面有关工厂返回“自身”实例的信息

工厂构造函数没有返回“自身”的实例。工厂方法(在本例中)采用两个参数:“名称”和函数。该函数返回一个提供所需功能的对象(带有方法、属性等)。

myapp( Angular 内部)上的工厂方法所做的就是将“名称”分配给从函数返回的对象,并使其可供 Controller 使用。

不要沉迷于 Angular 返回“工厂”的想法。 Angular 只需要一段代码(提供者)即可为您的 Controller 提供一些功能。 例如,可以这样创建服务:

function Houdini(){
    this.doIt = function(){
    alert("abracadabra");
    };
}

myapp.factory("mrMagic", function doSomethingGreat(){
  return new Houdini()
})

稍后在你的 Controller 中你可以这样做

mrMagic.doIt()。

关于javascript - Angularjs 工厂返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26340368/

相关文章:

javascript - pdfmake.js 未捕获类型错误 : Cannot read property 'length' of null

javascript - 找到奇数和偶数div并放入包含div中

javascript - 使用 GruntJS 的 AngularJS 开发模式

angularjs - UI-GRID - 行过滤后删除选定的行

javascript - 这是一个伪装成工厂的 AngularJS 服务吗?

angularjs - 如何防止 Angular-ui 模式关闭?

javascript - 使用工厂方法创建服务时,AngularJS 模块未定义

javascript - Node.js Express 与 Azure 错误请求

javascript - Angular for 循环返回最后一个值

javascript - 如何通过 Node.js 或 NPM 模块组合/序列化此类 JSON 对象?