我通过我的服务检索普通的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类型(通过开发人员工具确认)。
我尝试做的甚至可能吗? 感谢
答案 0 :(得分:0)
发现我的问题......我在服务正文中声明了构造函数和原型方法。
我在它之外宣布它们并且它有效但不确定这是否是行事的角度方式