Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用角度传感器动态加载控制器和控制器数据_Javascript_Angularjs - Fatal编程技术网

Javascript 使用角度传感器动态加载控制器和控制器数据

Javascript 使用角度传感器动态加载控制器和控制器数据,javascript,angularjs,Javascript,Angularjs,我需要使用AngularJS动态添加和初始化一组控制器。我能够使用下面的代码添加控制器(基于),但不知道如何动态地将数据传递给控件 我的代码在下面,也可以作为。目标是在添加模板后,在模板中填充{{field\u name}和{{field\u type}——现在它们是空的。我尝试使用nginit设置这些,但似乎不起作用 这是我第一次使用AngularJS,我来自一个骨干的背景,所以我很抱歉我遗漏了一些明显的东西,请感觉需要纠正任何事情。从客户机上定义的动态数据结构添加和初始化控制器是项目的一项要

我需要使用AngularJS动态添加和初始化一组控制器。我能够使用下面的代码添加控制器(基于),但不知道如何动态地将数据传递给控件

我的代码在下面,也可以作为。目标是在添加模板后,在模板中填充
{{field\u name}
{{field\u type}
——现在它们是空的。我尝试使用
nginit
设置这些,但似乎不起作用

这是我第一次使用AngularJS,我来自一个骨干的背景,所以我很抱歉我遗漏了一些明显的东西,请感觉需要纠正任何事情。从客户机上定义的动态数据结构添加和初始化控制器是项目的一项要求,因此我将无法在服务器上呈现页面内容或进行其他API调用。提前谢谢

Javascript:

数据\u字段=[
{'field_name':'name','field_type':'str'},
{'field_name':'location','field_type':'str'},
{'field_name':'is_active','field_type':'bool'}
]
//创建基本模块和存储提供程序以供以后使用
提供者={};
editorApp=angular.module('editorApp',[],
函数($controllerProvider、$compileProvider、$provide){
提供者={
$controllerProvider:$controllerProvider,
$compileProvider:$compileProvider,
$provide:$provide
};
}
);
//Boostrap基模
引导($('body'),['editorApp']);
//在加载控制器之前,存储我们的_invokeQueue长度
//这只是为了我们不重新注册任何东西
queueLen=angular.module('editorApp')。\u invokeQueue.length;
//为字符串字段定义控制器
角度.module('editorApp')。控制器('DisplayFieldStr',
函数($scope,$rootScope){
}
);
//为布尔字段定义控制器
角度.module('editorApp')。控制器('DisplayFieldBool',
函数($scope,$rootScope){
}
);
//注册我们刚刚加载的控件/指令/服务
var queue=angular.module('editorApp')。\u invokeQueue;

对于(i=queueLen;i,这里有一种方法可以操作控制器的作用域:

//create a new scope from an existing one
var newScope = scope.$new();

//add whatever data you want to
newScope.someProperty = 'some value';

//compile the html with your custom scope
$compile(element.contents())(newScope);
假设编译后的html如下所示:

<p>{{someProperty}}</p>
{{someProperty}

结果将是:

<p>some value</p>
一些值


是的,这就是我想要完成的,谢谢。在我的JS结束时调用
$compile
之前,使用
$rootScope
这样做会不会是“Angularish”呢?如果可能的话,我真的很感激使用我的代码来做一个示例。@HakanB。我在回答中包括了一个简单的实时演示。我不太确定是什么l你的项目需要-使用你的代码对我来说可能相当困难。像这样的懒散加载并不是真正的“安圭拉式”不管你做什么,因为开发人员没有考虑到这一点……幸运的是,这是可能的。无论你做什么,只要遵循通常的最佳实践。我认为这里唯一需要的是$compile发生在一个指令中,因为这是dom操作,其他逻辑应该在服务中(如获取/创建控制器函数).好的-非常感谢您的帮助。我不确定您是否看到了,但我包含了一个JSFIDLE,如果它有助于处理我的代码:否则我将使用您提供的代码。谢谢。@HakanB。我不明白为什么所有这些都发生在angular之外……您可能需要解释的内容太多了。总之,您可以添加一些内容我在那里的示例代码只是使用$rootScope作为创建的范围。在花了更多时间学习Angular之后,很明显我的方法是完全错误的,这个问题没有任何意义。感谢您的帮助。我将尝试结束这个问题。
<p>{{someProperty}}</p>
<p>some value</p>