我为控制器定义了一个模型,用于根据this文章封装模型的方法和操作。
当我使用原型方法检索数据时,会处理$ http请求但数据无法操作以供使用。我也不能在视图上使用它。角度误差是:
“TypeError:a不是函数”。
我正在使用棱角分明v1.3.15。
示例:
clientManager.getItem(id).then(
function(res) {
console.log(res.getUserData());
}
);
以上错误适用于res.getUserData()。 getUserData方法是Book工厂下面的一个方法ike getImageUrl()。
app.factory('Book', ['$http', function($http) {
function Book(bookData) {
if (bookData) {
this.setData(bookData):
}
// Some other initializations related to book
};
Book.prototype = {
setData: function(bookData) {
angular.extend(this, bookData);
},
getImageUrl: function(width, height) {
return 'our/image/service/' + this.book.id + '/width/height';
}
};
return Book;
}]);
如何在我的观点中注册原型方法?
答案 0 :(得分:0)
在此示例中,您永远不会使用$ http服务。但res变量可能是默认的promise对象,并没有这个函数getUserData。
答案 1 :(得分:0)
您不会将方法注册到视图。
您现在拥有可以注入控制器,指令或其他服务的服务。因此,如果您需要视图中的图书数据,您可以将服务注入视图的控制器:
app.controller('ViewCtrl', ['$scope','Book', function($scope, Book){
var aBook = new Book();
aBook.setData({'title':'value'});
$scope.title = aBook.title;
}])
视图中提供了$ scope的属性。因此,您可以在视图中使用{{title}}之类的内容