角度数据模型

时间:2015-06-12 19:06:55

标签: javascript angularjs

我为控制器定义了一个模型,用于根据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;
}]);

如何在我的观点中注册原型方法?

2 个答案:

答案 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}}之类的内容