如您所知,可以按如下方式初始化对象:
<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>有没有可能通过一个函数来定义类似这样的对象:
<div ng-init="init()">我的目标实际上是从API中获取对象,并通过ng-repeat将它们显示在列表中。
发布于 2013-12-16 13:44:23
documentation说ng-init可以接受任何表达式。所以,是的,只要相关的作用域定义了一个名为init()的函数,您就可以做上面想做的事情(我也为了好玩而验证了它)。
请注意,文档中说ng-init实际上只用于ng-repeat内部的别名属性
为ngRepeat的特殊属性设置别名的唯一合适的ngInit用法,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。
最后,请注意,您可以在创建控制器时简单地初始化变量。所以实际上根本不需要使用ng-init。例如:
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();
}]);发布于 2014-08-07 17:40:50
所以实际上根本不需要使用ng-
有时,您可能希望通过在视图中传递数据来初始化某些内容,这可能在.NET MVC等模板化页面中有其用途,您希望将信息从.NET传递到angular (控制器已经有数据,最简单的方法是在ViewBag中传递)。
要做到这一点,“正确”的方法是曲折的,而且很难维护,因为你必须在页面上嵌入一个带有固定ID的脚本标记,并使用javascript/jquery将数据拉到控制器中的作用域中,同样使用硬编码的ID。
无论哪一种方式都打破了(好吧,杂乱无章)角度的MVW模式,所以,我想,选择你的毒药吧。
https://stackoverflow.com/questions/20603869
复制相似问题