理解angular.copy()中1.0.7到1.2.26之间的变化

时间:2014-10-22 15:47:16

标签: javascript angularjs

嘿AngularJS巫师!

我试图实现类似于以下plnkr的东西。原post

http://plnkr.co/edit/mzQhGg?p=info

var projectsApp = angular.module('projects', ['ngResource']);

projectsApp.config(function($routeProvider) {
  $routeProvider
          .when('/', {
    controller: 'ProjectListCtrl',
    templateUrl: 'projectlist.html'})
          .when('/project/:id', {
    controller: 'ProjectDetailCtrl',
    templateUrl: 'projectdetail.html'
  })
          .otherwise('/');
});

projectsApp.factory('Project', function($http) {
  var json = $http.get('project.json').then(function(response) {
    return response.data;
  });

  var Project = function(data) {
    if (data) angular.copy(data, this);
  };

  Project.query = function() {
    return json.then(function(data) {
      return data.map(function(project) {
        return new Project(project);
      });
    })
  };

  Project.get = function(id) {
    return json.then(function(data) {
      var result = null;
      angular.forEach(data, function(project) {
        if (project.id == id) result = new Project(project);
      });
      return result;
    })
  };

  return Project;
});

projectsApp.controller('ProjectListCtrl', function(Project, $scope) {
  $scope.projects = Project.query();
});

projectsApp.controller('ProjectDetailCtrl', function(Project, $routeParams, $scope) {
  $scope.project = $routeParams.id
          ? Project.get($routeParams.id)
          : new Project();
});

在这个例子中,它完美地工作但是我注意到angularjs引用是1.0.7而不是最新的1.2.26。一旦我将脚本引用更新为1.2.26,示例就会中断。我认为问题出在app.js文件的第21行,其中angular.copy(data, this)被调用。

我还是angularjs的新手。我尝试使用谷歌搜索,但未能弄清楚1.0.7和1.2.26之间的突破性变化。我找到了this并搜索了angular.copy(),但我不了解与我的例子相关的后果。另外,我想更好地理解它。

提前致谢!

1 个答案:

答案 0 :(得分:0)

您必须在代码中包含角度路由js。因为在最新版本中,路由与一般角度js脚本分开。

谢谢, Sandeep Garg