首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ng-init通过函数

Ng-init通过函数
EN

Stack Overflow用户
提问于 2013-12-16 13:09:41
回答 2查看 67K关注 0票数 12

如您所知,可以按如下方式初始化对象:

代码语言:javascript
复制
<div ng-init="friends = [{name:'John', phone:'555-1276'},
                         {name:'Mary', phone:'800-BIG-MARY'},
                         {name:'Mike', phone:'555-4321'},
                         {name:'Adam', phone:'555-5678'},
                         {name:'Julie', phone:'555-8765'},
                         {name:'Juliette', phone:'555-5678'}]"></div>

有没有可能通过一个函数来定义类似这样的对象:

代码语言:javascript
复制
<div ng-init="init()">

我的目标实际上是从API中获取对象,并通过ng-repeat将它们显示在列表中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-16 13:44:23

documentationng-init可以接受任何表达式。所以,是的,只要相关的作用域定义了一个名为init()的函数,您就可以做上面想做的事情(我也为了好玩而验证了它)。

请注意,文档中说ng-init实际上只用于ng-repeat内部的别名属性

为ngRepeat的特殊属性设置别名的唯一合适的ngInit用法,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。

最后,请注意,您可以在创建控制器时简单地初始化变量。所以实际上根本不需要使用ng-init。例如:

代码语言:javascript
复制
var myApp = angular.module('myApp', []);

myApp.controller('myController', ['$scope', function($scope){

  $scope.init = function() {
    $scope.a = 'Apples';
    $scope.b = 'Bees';
    $scope.c = 'Zebras';
  };
  // runs once per controller instantiation
  $scope.init();

}]);
票数 21
EN

Stack Overflow用户

发布于 2014-08-07 17:40:50

所以实际上根本不需要使用ng-

有时,您可能希望通过在视图中传递数据来初始化某些内容,这可能在.NET MVC等模板化页面中有其用途,您希望将信息从.NET传递到angular (控制器已经有数据,最简单的方法是在ViewBag中传递)。

要做到这一点,“正确”的方法是曲折的,而且很难维护,因为你必须在页面上嵌入一个带有固定ID的脚本标记,并使用javascript/jquery将数据拉到控制器中的作用域中,同样使用硬编码的ID。

无论哪一种方式都打破了(好吧,杂乱无章)角度的MVW模式,所以,我想,选择你的毒药吧。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20603869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档