当前位置: 首页 > 面试题库 >

Angular-UI模态解析

滑弘扬
2023-03-14
问题内容

亲爱的我是Angularjs的新手,我正在用Angular创建模式。我在网上发现的一个例子如下,我很难理解

$scope.checkout = function (cartObj) {
  var modalInstance = $modal.open({
  templateUrl : 'assets/menu/directives/payment-processing-modal.tmpl.html',
  controller : ["$scope", "$modalInstance", "cartObj", function($scope, $modalInstance, cartObj) {
  }],
  resolve : { // This fires up before controller loads and templates rendered
    cartObj : function() {
       return cartObj;
    }
  }
});

我感到困惑的是我已经作为函数参数接收的cartObj通过依赖注入传递给我的控制器。但是,为什么我必须创建一个名为cartObj的函数并返回该变量。似乎令人困惑。谁能帮忙吗?


问题答案:

这是逐行细分:

$scope.checkout = function (cartObj) {

正在创建一个名为checkout的$
scope变量,该变量引用一个函数,以便您可以在视图中以如下方式调用该函数checkout()(例如,通过带有ng-click =“
checkout”的按钮)。

此函数传递给名为cartObj 的 服务

var modalInstance = $modal.open({

名为modalInstance的变量用于调用$ modal service open方法

UI Bootstrap $ modal服务返回一个模式实例。向open方法传递一个对象,该对象定义模态实例的配置,如下所示:

templateUrl : 'assets/menu/directives/payment-processing-modal.tmpl.html',

这表示模式实例应使用在相应URL处找到的模板。

controller : ["$scope", "$modalInstance", "cartObj", function($scope, $modalInstance, cartObj) {
  }],

这将为通过$ scope,$ modalInstance服务以及重要的是已解析的cartObj服务的模式实例创建一个控制器。

服务是单例,用于跨控制器共享数据。这意味着存在一个版本的cartObj服务,如果一个控制器更新了该版本,则另一个控制器可以查询该服务并获取由任何其他控制器更新的数据。很好,但是如果在控制器加载时需要使用服务中的某个值来初始化变量,则该变量将返回undefined,因为它必须先请求然后等待取回数据。那就是解决的根源:

  resolve : { // This fires up before controller loads and templates rendered
    cartObj : function() {
       return cartObj;
    }
  }
});

这里使用resolve的原因可能是因为模板本身依赖于加载模板时来自cartObj的某些数据。Resolve将在控制器加载之前解决承诺,以便当控制器加载数据时就可以准备就绪。基本上,resolve简化了控制器内部模型的初始化,因为初始数据被提供给控制器,而不是控制器需要外出并获取数据。

解析的cartObj是传递给modalInstance的内容,因此可以在控制器中以以下方式访问:cartObj。 财产



 类似资料:
  • 问题内容: 我正在尝试将一些模型数据打开时传递给模式窗口。当用户单击某个元素时,我想打开模式窗口并显示与单击的内容有关的更详细的信息。 我创建了一个插件,该插件可以将数据传递到模态窗口中,但其工作方式与我想要的一样。 我正在尝试使用ng-click传递数据: 谁能帮我这个?或指出正确的方向? 问题答案: 怎么样这个? 我添加了解决方案 而在我做的:注射后

  • 问题内容: 我遇到了来自Angular-ui-bootstrap的模式服务问题。我已经根据以下示例设置了模态:http : //angular- ui.github.io/bootstrap/, 但是如果我从模态内容中删除列表项并替换它们,则无法从模态中得到结果具有文本区域和其他ng模型。我会设置一个jsfiddle,但是我不知道如何包含显示我想要的特定库(例如angular- ui-bootst

  • 本文向大家介绍angular-ui-router 将数据解析为状态,包括了angular-ui-router 将数据解析为状态的使用技巧和注意事项,需要的朋友参考一下 示例 您可以resolve在转换到状态时将数据转换为状态,通常在状态需要使用该数据或在某些提供的输入需要进行身份验证时解析为状态时非常有用。 定义状态时,您需要提供要解析到.resolve属性中的值的映射,每个解析后的值都应具有一个

  • 问题内容: 在我正在开发的一个有角度的应用程序中,我希望有一个抽象的父状态,该状态必须解析其所有子状态的某些依赖关系。具体来说,我希望所有要求经过身份验证的用户的状态都必须从某些authroot状态继承该依赖项。 我遇到了无法始终解决父依赖关系的问题。理想情况下,我想让父状态检查用户是否仍自动登录到任何子状态。在文档中,它说 子状态将从父状态继承已解析的依赖项,并可以将其覆盖。 我发现仅当我从父级

  • 问题内容: 这是我的app.js文件-我有一个父状态和两个子状态。两个子视图都需要该对象。 我想使用此已解析的obj来决定子模板 我怎样才能做到这一点? 问题答案: 有一个可行的例子。而不是我们应该使用。这是新的状态def: 我们为什么要使用这种方法?如此处记录: 范本 TemplateUrl … 也可以是返回url的函数。 它采用一个预设参数,该参数不会被注入。 TemplateProvider

  • 问题内容: 我在Modal控制器中有几个表达式 调用模式时,我需要清除所有计时器: 我怎样才能做到这一点? PS对不起,错误的代码格式。我不知道为什么,但我无法更好地格式化它。我在这里重复了代码: 问题答案: 该服务返回一个可用于取消超时的对象。 要取消所有未决超时,您需要维护一个诺言列表,并在打开模式时取消整个列表。