Asq*_*qan 12 angularjs angularjs-directive angularjs-ng-init
如您所知,可以按如下方式初始化对象:
<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>
Run Code Online (Sandbox Code Playgroud)
是否可以通过函数定义类似这样的对象:
<div ng-init="init()">
Run Code Online (Sandbox Code Playgroud)
我的目标实际上是从API获取对象并通过ng-repeat在列表中显示它们
Sun*_* D. 21
该文件说,ng-init将采取任何表情.所以是的,只要关联的范围定义了一个被调用的函数init()(并且我也验证了它的乐趣),你就可以做你想要的.
请注意,文档说这ng-init实际上只是用于以下内容中的别名属性ng-repeat:
唯一适当的用途是使用ngInpe来替换ngRepeat的特殊属性,如下面的演示所示.除了这种情况,您应该使用控制器而不是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();
}]);
Run Code Online (Sandbox Code Playgroud)
所以根本不需要使用ng-init
有时您会希望通过在视图中传递数据来初始化某些内容,这些数据可能在模板化页面(如.NET MVC)中使用,您希望将信息从.NET传递到角度(控制器已经拥有数据和最简单的方法)是在ViewBag中传递这个.
要做到这一点,"正确"的方式是环形的,并且很难维护,因为你必须在页面上嵌入一个带有固定ID的脚本标签,并使用javascript/jquery将数据拉入控制器的范围,再次使用硬盘编码的ID.
无论哪种方式打破(好吧,kludges)MVW模式的角度,所以,我想,选择你的毒药.
| 归档时间: |
|
| 查看次数: |
63930 次 |
| 最近记录: |