javascript - Angular Service 创建的函数需要 this 关键字

标签 javascript angularjs

虽然问题更多,但我认为 javascript 类型问题比 Angular 问题更多,我正在创建一个服务,我会这样调用它

// controller injects activityApi , then service function call is made
var activities = activityApi.getActivityById(1122);

如果我不在函数名称前面放置“this”关键字,则会出现错误 1. 为什么我需要“这个”
2. 还有什么其他选择? (我正在尝试养成不使用 function blah() { ... } 执行老式 javascript 的习惯

this.getActivityById = function(id) {
        $http.get('/Umbraco/Api/ActivityApi/GetActivity').
            success(function (data, status, headers, config) {
            console.log(data);
            return data;
            }).
       error(function (data, status, headers, config) {
           // log error
       });
    };

最佳答案

如果您正在编写一个工厂,请使用工厂内的一个对象,并将所有调用放入其中。就像

(function() {
    'use strict';

    angular
        .module('app')
        .factory('activityApi', activityApi);

    activityApi.$inject = ['$http'];

    function activityApi($http) {
        var service = {
              getActivityById : getActivityById ,
        };
        return service;


     function getActivityById (id) {
        $http.get('/Umbraco/Api/ActivityApi/GetActivity').
          success(function (data, status, headers, config) {
           console.log(data);
           return data;
        }).
       error(function (data, status, headers, config) {
          // log error
       });
    };

    };
})();

这里您将返回可调用函数的工厂对象。

在这里你可以调用工厂函数

var activities = activityApi.getActivityById(1122);

关于javascript - Angular Service 创建的函数需要 this 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40254180/

相关文章:

javascript - 如何在拉斐尔中使用 eve()?

javascript - 如何在js中连接字符串和数字

javascript - 如何检查 Angular 1.5 中是否存在组件

javascript - 对 JavaScript 函数进行非正则表达式重构的最快方法

javascript - Firebase update() 不是带有查询的函数

javascript - Parse.com/Nodejs http-request 特殊字符已删除

javascript - MVC - 处理新行的未终止字符串文字

php - 基于 PHP 通过 jQuery 响应的条件语句

javascript - 是什么让这个函数运行得更慢?

javascript - 使用 Angular 连接多个数组