将json变量传递给AngularJS中的控制器
我正在AngularJS中创建一个插件,它将Json数组作为输入 此json通过用户的一些选择/输入在客户端动态生成,并存储在一个变量中将json变量传递给AngularJS中的控制器,angularjs,Angularjs,我正在AngularJS中创建一个插件,它将Json数组作为输入 此json通过用户的一些选择/输入在客户端动态生成,并存储在一个变量中 var jsonX = //This is an Eg Structure. [ { "ObjectName": "test", "ObjectTarget": "http://asdf.com/test.jpg", }, { "ObjectName": "test1",
var jsonX = //This is an Eg Structure.
[
{
"ObjectName": "test",
"ObjectTarget": "http://asdf.com/test.jpg",
},
{
"ObjectName": "test1",
"ObjectTarget": "http://asdf.com/test2.jpg",
}
] ;
我想把这个变量jsonX传递给控制器
我也有一个要求,我可以在一个页面中多次使用插件,但用不同的变量初始化它
迄今取得的进展:
我已经使用静态输入实现了这个功能。需要一种传递动态数据的方法吗
//Js File
MyApp.controller('ObjectController', function ($scope) {
$scope.title = "Hello Title";
**//--How Can i pass a variable on my page to this.
// $scope.ObjectList = jsonX ;**
$scope.ObjectList = [
{
"ObjectName": "test",
"ObjectTarget": "http://asdf.com/test.jpg",
},
{
"ObjectName": "test1",
"ObjectTarget": "http://asdf.com/test2.jpg",
}
] ;
});
//&HTML
<div ng-controller="ObjectController">
<!-- How can I pass the variable name through some tags Eg: ng-init = "jsonx" -->
</div
-----@worldAsk完整的源代码
--ngObjectControl.js--------
"严格使用",;
/*控制器*/
var MyApp=angular.module'MyApp',[];
MyApp.controller'ObjectController',函数$scope{
$scope.title=你好标题;
$scope.CurrentIndex=0;
$scope.init=函数initVar{
$scope.ObjectList=initVar;//init var未定义
$scope.TotCnt=$scope.ObjectList.length;
};
/*
$scope.ObjectList=[
{
对象名称:FROX001,
对象目标:http://asdf.com/frox001.jpg,
对象类型:图像,
ObjectData:Fiirst Waala
},
{
对象名称:FROX002,
对象目标:http://asdf.com/frox001.jpg,
ObjectType:pdf,
ObjectData:Second Waala
},
{
对象名称:FROX003,
对象目标:http://asdf.com/frox001.jpg,
对象类型:图标,
对象数据:
},
{
对象名称:FROX004,
对象目标:http://asdf.com/frox001.jpg,
对象类型:图像,
ObjectData:Fourth Waala
}
];
*/
$scope.movePrev=函数{
如果$scope.CurrentIndex
{{title}}
{{obj.ObjectData}}
{{obj.ObjectName}
是不正确的,您无法通过指令访问Html端的Js变量,指令中只能访问角度对象。因此,您应该将jsonx变量传递给角度对象,如
$scope.jsonx=jsonx,这样您就可以访问并且没有未定义的错误。这篇文章给了我一个解决方法 我在控制器中添加了一个方法,该方法将重置我的列表:
$scope.SetObjectList = function (NewList) {
$scope.ObjectList = NewList;
$scope.TotCnt = $scope.ObjectList.length;
$scope.CurrentIndex = 0;
};
&需要时从外部设置数据源:
<script >
var ctrlx = document.getElementById("ngObjCtrl");
SetObjectCtrlDataSource(ctrlx, jsonx);
function SetObjectCtrlDataSource(ctrl, src)
{
var scope = angular.element(ctrl).scope();
scope.$apply(function () {
scope.SetObjectList(src);
});
}
</script>
我已经尝试过了。但是我在init函数中得到了未定义的结果。在初始化其他脚本之前,jsonx变量在html文件中定义。我已经编辑了Postcan,您可以将其保存到某个位置,就像隐藏的输入一样,然后将其绑定到angular。像这样,如果我将变量绑定到输入字段,我如何在cont中使用它roller?然后可以使用$scope.jsonx
<script >
var ctrlx = document.getElementById("ngObjCtrl");
SetObjectCtrlDataSource(ctrlx, jsonx);
function SetObjectCtrlDataSource(ctrl, src)
{
var scope = angular.element(ctrl).scope();
scope.$apply(function () {
scope.SetObjectList(src);
});
}
</script>