koukabatsugun

参考:http://docs.angularjs.org/tutorial/

创建Module

使用module()方法。在第2个参数中传入依赖模块数组。

var phonecatApp = angular.module(\'phonecatApp\', [
    \'ngRoute\',
    \'phonecatControllers\'
]);

注册Controller

使用controller()方法。

NG识别参数名并自动注入依赖。若使用代码压缩,则参数名将被压缩从而无法使用自动注入。

使用以下两种显式注入方式可解决代码压缩带来的问题。

方式一、

function PhoneListCtrl($scope, $http) {...}
PhoneListCtrl.$inject = [\'$scope\', \'$http\'];
phonecatApp.controller(\'PhoneListCtrl\', PhoneListCtrl);

方式二、

function PhoneListCtrl($scope, $http) {...}
phonecatApp.controller(\'PhoneListCtrl\', [\'$scope\', \'$http\', PhoneListCtrl]);

注册控制器时通常采用匿名函数的写法

phonecatApp.controller(\'PhoneListCtrl\', [\'$scope\', \'$http\', function($scope, $http) {...}]);

使用$http模块进行HTTP请求

请求url为\'phones/phones.json\',并通过success方法设置请求成功后的回调函数。

NG将自动侦测JSON响应并解析。

$http.get(\'phones/phones.json\').success(function(data) {
    $scope.phones = data;
});

注册Service

注册服务,需要创建一个依赖于ngResource【angular-resource.js】的模块。

使用factory方法(除此之外还有provide()和service()方法),显式注入ngResource.$resource。

教程中没有对$resource解释得比较清楚,故而参考了在线文档,并翻译如下:

http://www.cnblogs.com/koukabatsugun/p/3442525.html

var phonecatServices = angular.module(\'phonecatServices\', [\'ngResource\']);
 
phonecatServices.factory(\'Phone\', [\'$resource\',
    function($resource){
        return $resource(\'phones/:phoneId.json\', {}, {
            query: {method:\'GET\', params:{phoneId:\'phones\'}, isArray:true}
    });
}]);

以上,$resouce的第三个参数actions中,覆盖了默认的query动作。

1、设置HTTP请求为GET方法。

2、指定url模板中的【phoneId】参数为【phones】。

3、返回值为数组。

使用Phone服务的参考代码如下:

$scope.phones = Phone.query();

$scope.phone = Phone.get({phoneId: $routeParams.phoneId}, function(phone) {
    $scope.mainImageUrl = phone.images[0];
});

定义Router

为应用配置路由,需要创建一个依赖于ngRoute【angular-route.js】的模块。

使用模块的config()方法,显式注入ngRoute.$routeProvider。

var phonecatApp = angular.module(\'phonecatApp\', [
    \'ngRoute\',
    \'phonecatControllers\'
]);
 
phonecatApp.config([\'$routeProvider\',
    function($routeProvider) {
        $routeProvider.
          when(\'/phones\', {
              templateUrl: \'partials/phone-list.html\',
              controller: \'PhoneListCtrl\'
          }).
       when(\'/phones/:phoneId\', {
              templateUrl: \'partials/phone-detail.html\',
              controller: \'PhoneDetailCtrl\'
          }).
          otherwise({
              redirectTo: \'/phones\'
    });
}]);

从URL中获取参数

依赖$routeParams。

从【/phones/:phoneId】中获取phoneId,只需$routeParams.phoneId。

phonecatControllers.controller(\'PhoneDetailCtrl\', [\'$scope\', \'$routeParams\',
    function($scope, $routeParams) {
        $scope.phoneId = $routeParams.phoneId;
}]);

分类:

技术点:

相关文章:

  • 2021-12-28
  • 2021-05-31
  • 2022-12-23
  • 2021-07-13
  • 2021-10-15
  • 2021-12-30
  • 2021-11-28
  • 2021-05-29
猜你喜欢
  • 2021-12-13
  • 2022-02-11
  • 2022-01-03
  • 2021-12-21
  • 2022-02-04
  • 2022-01-29
相关资源
相似解决方案