缺少控制器中的原型方法

时间:2014-07-05 01:33:29

标签: javascript angularjs angularjs-controller

我通过我的服务检索普通的json数据,然后通过构造函数和原型方法将一些行为附加到它上面。 当这个对象从服务返回到控制器时,我可以通过开发人员工具看到它具有正确的'类'名称,但没有一种方法可用。 在angularjs应用程序之外测试我的类和原型时,它们按预期工作。 以下是我的服务:

app.factory('characterService', function($http) {
    var _chars = [];
    return {
        getCharacters: function() {
            return $http.get('app/resources/charsheets.js').then(function(d) {
                _chars = [];
                var data = d.data.characters;
                for (var i = 0; i < data.length; i++) {
                    _chars.push(new Character(data[i]));
                }
                return _chars;
            });
        }
    };
    Character.prototype.getStatBonus = function(statAbbr) {
        var bonus = 0;
        if (statAbbr && statAbbr != '') {
            var baseStats = this["baseStats"];
            for (var i = 0; i < baseStats.length; i++) {
                if (baseStats[i].abv == statAbbr) {
                    //More stuff normally happens, but for the sake of brevity
                    //it has been reduced to a simple assignment
                    bonus = baseStats[i].totalBonus;
                    break;
                }
            }
        }
        return bonus;
    };

});

function Character(raw) {
     //Stuff here
   }

我非常基本的控制器:

app.controller('characterController',function($scope,characterService)
    {
        $scope.model = {};

        characterService.getCharacters().then(function(data){
            $scope.model.characters = data;
            $scope.model.currentCharacter = data[0];
        });

    });

一些示例标记:

<div>

    {{model.currentCharacter.getStatBonus('Ag')}}

</div>

我得到的错误是getStatBonus未定义,即使该对象属于Character类型(通过开发人员工具确认)。

我尝试做的甚至可能吗? 感谢

1 个答案:

答案 0 :(得分:0)

发现我的问题......我在服务正文中声明了构造函数和原型方法。

我在它之外宣布它们并且它有效但不确定这是否是行事的角度方式