AngularJS:将params从控制器传递到服务

栏目: 编程语言 · AngularJS · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/25881804/angularjs-passing-params-from-controller-to-service

我在弄清楚如何将角度控制器中的参数传递给我时遇到了麻烦

服务

#my controller  
'use strict';

angular.module('recipeapp')
  .controller('recipeCtrl', ['$scope', 'recipeService',
    function($scope, recipeService){
      $scope.recipeFormData={};
      $scope.recipeSave = function(){
        recipeService.saveRecipe();
      }


  }]);

#my service
'use strict';
angular.module('recipeapp').service('recipeService',['$http', function($http){

  this.saveRecipe = save;

  function save(callback){
     //calling external http api
  }

}]);

我在这里要做的是,从我的表单获取$scope.formData并且控制器应该将其传递给服务,根据我的理解,我不能在服务中使用$scope所以我需要找到一种传递$的方法scope.formData到服务

艰难的想法,在控制器中,recipeService.saveRecipe($scope.formData);但我不确定如何从服务中收集,

当我更改服务this.saveRecipe(val)= save;它不起作用:(

任何帮助都会得到满足

此示例演示了角度应用程序的正确结构:

>控制器内的模型初始化

>实现服务单例,并注入您的控制器

>使用$http promises异步调用Web API调用,并允许服务的调用者处理其成功/失败.

>使用“控制器作为”语法从控制器公开函数,而不是直接从作用域公开函数.

>双向数据模型绑定(文本框到配方和配方到文本框)

在控制器中初始化模型:

angular.module('recipeapp')
  .controller('recipeCtrl', ['$scope', 'recipeService',
    function($scope, recipeService){
      // initialize your model in you controller
      $scope.recipe={};

      // declare a controller function that delegates to your service to save the recipe
      this.saveRecipe = function(recipe) {
           // call the service, handle success/failure from within your controller
           recipeService.saveRecipe(recipe).success(function() { 
               alert('saved successfully!!!'); 
           }).error(function(){
               alert('something went wrong!!!');
           });

      }
  }]);

在配方服务中,定义saveRecipe函数:

angular.module('recipeapp').service('recipeService',['$http', function($http){

  // expose a saveRecipe function from your service
  // that takes a recipe object
  this.saveRecipe = function(recipe){
      // return a Promise object so that the caller can handle success/failure
      return $http({ method: 'POST', url: '/api/recipe/add', data: recipe});
  }

}]);

将食谱对象绑定到视图中;添加一个按钮来调用saveRecipe控制器功能并保存配方(传入模型配方对象):

<div ng-app="recipeapp" ng-controller="recipeCtrl as ctrl">
   <form name="recipeForm">
    Recipe Name: <input type="text" ng-model="recipe.name" />
    <button ng-click="ctrl.saveRecipe(recipe)">Save Recipe</button>
    </form>
</div>

翻译自:https://stackoverflow.com/questions/25881804/angularjs-passing-params-from-controller-to-service


以上所述就是小编给大家介绍的《AngularJS:将params从控制器传递到服务》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

支持向量机

支持向量机

邓乃扬、田英杰 / 科学出版社 / 2009-8 / 48.00元

《支持向量机:理论、算法与拓展》以分类问题(模式识别、判别分析)和回归问题为背景,介绍支持向量机的基本理论、方法和应用。特别强调对所讨论的问题和处理方法的实质进行直观的解释和说明,因此具有很强的可读性。为使具有一般高等数学知识的读者能够顺利阅读,书中首先介绍了最优化的基础知识。《支持向量机:理论、算法与拓展》可作为理工类、管理学等专业的高年级本科生、研究生和教师的教材或教学参考书,也可供相关领域的......一起来看看 《支持向量机》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具