在工厂和控制器之间共享 http.get 数据

2024-05-02

我成功创建了一个获取 .php 文件输出(JSON)的工厂,

我的问题是如何从控制器内访问它:

myApp = angular.module("myApp", [])

myApp.factory "mainData",  ($http) ->
 $http.get('gethome.php').success (data) ->
  data: data
  console.log(data)

myApp.controller "HomeCtrl", ($scope, mainData) ->
 $scope.home = mainData.data

如果我在这里选择正确的语法,请告诉我, 我在教程中看到很多关于如何创建模块/控制器的示例, 我正在寻找正确的方法


将工厂注入 Angular 控制器时,注入的工厂引用包含您从工厂返回的那些成员:

myApp.factory("mainData", function($http) {
  var mData = {};
  $http.get('gethome.php').success(function(data) {
    mData.data = data;
  });
  return mData;
});


myApp.controller("HomeCtrl", function($scope, mainData) {
  $scope.home = mainData.data; // Here mainData equals mData object literal from the mainData factory
});

但是,您的代码的问题是 mainData.data 将始终未定义,因为工厂将在异步 $http 请求完成之前返回。因此,你的工厂应该返回一个承诺:

myApp.factory("mainData", function($http) {
  return $http.get('gethome.php');
});

myApp.controller("HomeCtrl", function($scope, mainData) {
  mainData.success(function(data) {
    $scope.home = data;
  });
});

注意:默认情况下,$http 方法总是返回一个 Promise。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在工厂和控制器之间共享 http.get 数据 的相关文章

随机推荐

  • 如何在android上的manageQuery中添加限制子句

    Android 的 API 通过 SQLite 提供了一种干净的机制来查询联系人列表 但是 我不确定如何限制结果 Cursor cur Activity mCtx managedQuery People CONTENT URI column
  • 如何清除gwt中的缓存?

    我怎样才能清除缓存gwt 或者有什么方法可以阻止浏览器保留缓存gwt 当您部署 GWT 应用程序时 避免代理和浏览器缓存 GWT 生成的 nocache js 文件非常重要 一种解决方案是实现一个 Servlet 过滤器 添加控制缓存行为的
  • 如何在react-native应用程序中禁用屏幕截图?

    我已经使用react native制作了一个移动应用程序 目前只有android 它不是博览会应用程序 我想禁止用户在应用程序打开时截取屏幕截图 我知道不可能完全禁用此功能 但我想让至少更难截取屏幕截图 我找到了一些例子 但我不知道如何实现
  • 一元运算符 ++ 不能应用于 Int 类型的操作数

    为什么下面的 swift 代码会给我带来错误 一元运算符 不能应用于 Int 类型的操作数 在 Xcode 6 3 2 上使用 swift 1 2 struct Set var player1Games Int var player2Gam
  • 如何将多个域路由到多个节点应用程序?

    我习惯了典型的 Lamp Web 托管环境 您只需单击 cpanel 中的几个按钮 您的域就会被分区并映射到 htdocs 中的文件夹 我经常使用 Node js 但做同样的事情似乎并不那么简单 如果我有多个节点应用程序 并且我想将doma
  • 在大型文本文件中查找重复记录

    我在一台 Linux 机器 Redhat 上 并且有一个 11GB 的文本文件 文本文件中的每一行包含单个记录的数据 并且该行的前 n 个字符包含该记录的唯一标识符 该文件包含略多于 2700 万条记录 我需要验证文件中不存在具有相同唯一标
  • 将列从日期转换为日期时间

    我有一个名为Lastmodified 数据类型为Date 但本来应该是DateTime 有没有办法转换列 当我使用 SQL Server Management Studio 的 设计 功能时 出现以下错误 不允许保存更改 您所做的更改需要以
  • C 中的 NULL 是否需要/定义为零?

    在我的 GCC 测试程序中 NULL 似乎为零 但维基百科说NULL只需要指向不可寻址的内存 有编译器做吗NULL非零 我很好奇是否if ptr NULL 是比更好的练习if ptr NULL is guaranteed to be zer
  • 如何禁用 AngularJS 中输入的修剪?

    我发现了一些奇怪的行为 默认情况下角度修剪模型值 快速谷歌搜索并不能帮助我解决这个问题 我发现了ng no trim指导性建议 ng trim等等 但没有任何作用 我在下面提供了一个代表这个问题的小片段 function Ctrl scop
  • 解压缩 GZIP http 响应(使用 jersey 客户端 api、java)

    有人可以告诉我在从某些 Http 调用获取响应时需要做什么才能解压缩 GZIP 内容吗 为了进行调用 我使用 Jersey Client API 请参阅下面的代码 String baseURI http api stackoverflow
  • 在 C++ 中是否有一种简单的方法可以将由空格字符分隔的一行输入拆分为整数?

    我是一名 C 初学者 我一直在开发一个项目 在该项目中 您必须输入一些用空格分隔的整数 并且程序必须输出所有可能的整数排列 我知道在 python 中 这可以使用 int item for item in input split 但我不知道
  • 更改 NSTextView 中空格字符的宽度

    我正在尝试制作一个阅读器应用程序来帮助有阅读困难的女孩 一些研究表明 仅仅改变文本 背景和阴影的颜色确实可以帮助孩子们摆脱困境 所以我试图让她这样做 它只是一个带有按钮的大 NSTextView 因此她可以更改字体大小 颜色 背景颜色 阴影
  • 更改创建 XML 读取器时使用的 XmlDictionaryReader Quotas 对象的 MaxArrayLength 属性

    我在向 C 服务发送 或接收 字节数组时遇到以下异常 There was an error deserializing the object of type System Byte The maximum array length quot
  • 为什么 clojure future 会阻塞主线程?

    我有一个简单的 lein 项目 其中 main包含一个未来 def f future 42 defn main args println f 当我跑步时lein run它打印42但不返回 我不明白为什么它不返回 如何得到lein run回来
  • 我应该复制 std::function 还是可以始终引用它?

    在我的 C 应用程序 使用 Visual Studio 2010 中 我需要存储 std function 如下所示 class MyClass public typedef std function
  • Selenium 3.7 和 Firefox ESR 52.4.1 是否需要 geckodriver?

    我的理解是 当使用Selenium WebDriver来自 NuGet 的 v3 7 我需要当前版本的 geckodriver 才能与 Firefox ESR v52 4 1 交互 但是 我已经成功运行测试并成功通过withoutgecko
  • 语义 UI 表单验证 - 仅当值不为空时验证某些表单字段

    我有一个表单 其中包含必填字段和可选字段 我正在使用语义 UI 的表单验证行为来验证字段 然而 我想要实现的是 表单验证行为仅在可选字段具有值时才验证可选字段 可选字段示例 div class field div
  • 调整 MailItem 中粘贴的 JPEG 的大小

    我正在尝试从 Excel 工作表发送图片 但尺寸非常小 我怎样才能获得合适的尺寸 基本上是整个屏幕 这是代码 Sub send as a pic Copy range of interest Dim r As Range Set r Ran
  • Firebug 分析问题:“没有要分析的活动”

    我想用一些 javascript jQuery 尝试一些不同的选项 看看哪个是最快的 但是我无法让分析正常工作 这是我要测试的代码 this keypress function e console profile test retrieve
  • 在工厂和控制器之间共享 http.get 数据

    我成功创建了一个获取 php 文件输出 JSON 的工厂 我的问题是如何从控制器内访问它 myApp angular module myApp myApp factory mainData http gt http get gethome