angular或js如何在不指定参数名的情况下返回数据

时间:2015-05-25 07:20:13

标签: javascript angularjs

标题并没有真正解释我在这里要问的问题。那么这是一个例子:

.factory('Story', function($http) {
   var storyFactory = {};
   Factory.getStory = function() {
      return $http.get('/api');
   }
})


.controller('StoryController', function(story) {

var vm = this;

Story.allStory()
    .sucess(function(mydata) {

    })
})

那么allStory()如何将数据返回到mydata?

2 个答案:

答案 0 :(得分:1)

您是否在询问javascript当时用逻辑对象替换编写代码的方式?

例如

console.log(new Array({"getWalkDetails":function(){return {"MaxSpeed":15, "DistanceWalked": 123}} },
                       "walking on sunshine", 
                       "oh oh" ).shift().getWalkDetails().MaxSpeed);
//outputs "15" to the console

这可以改写为

var arr = new Array();
var func = function(){
        var details = new Object();
        details.MaxSpeed =15;
        details.DistanceWalked = 124;
        return details;
}
var obj = {"getWalkDetails" : func};
arr.push(obj);
arr.push("walking on sunshine");
arr.push("oh oh");

var firstItem = arr.shift();
//the array function 'shift()' is used to remove the first item in the array and return it to the variable
var walkingDetails = firstItem.getWalkingDetails()//same as func() or obj.getWalkingDetails()
console.log(walkingDetails.MaxSpeed);//15

正如您所看到的,我们将大部分解释的输出存储为要单独使用的变量。

修改 如果您正在询问如何通过javascript中的引用传递对象,以允许mydata变量接收对其传递给它的函数所做的任何更改。然后this question可能对您有所帮助: javascript pass object as reference

修改 编辑了上面的代码

答案 1 :(得分:0)

我不完全确定你的意思(特别是因为我从未使用过Angular),但我有一种感觉,你对这个小技巧感到困惑:

//+ fn -> [a]
var getParameterNames = (function () {
    var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,
        ARGUMENT_NAMES = /([^\s,]+)/g;

    return function (fn) {
        var fnStr = fn.toString().replace(STRIP_COMMENTS, ''),
            names = fnStr.slice(fnStr.indexOf('(')+1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);

        return names || [];
    };
})();

function add (x, y) {
    return x + y;
}

console.log(getParameterNames(add));    // => ['x', 'y']

修改:here's a jsfiddle