本地有一个静态文件 index.html。一个index.js脚本 index.js中有 $scope.rows的JSON格式数据。
1 $scope.rows = [ 2 { appId: 1, appName: "會計系統1" , appType: 1, description: "應用系統說明!" }, 3 { appId: 2, appName: "會計系統2", appType: 2, description: "應用系統說明!" }, 4 { appId: 3, appName: "會計系統3", appType: 3, description: "應用系統說明!" }, 5 { appId: 4, appName: "會計系統4", appType: 3, description: "應用系統說明!" }, 6 { appId: 5, appName: "會計系統5", appType: 2, description: "應用系統說明!" }, 7 { appId: 6, appName: "會計系統6", appType: 1, description: "應用系統說明!" }, 8 { appId: 7, appName: "會計系統7", appType: 2, description: "應用系統說明!" }, 9 { appId: 8, appName: "會計系統8", appType: 1, description: "應用系統說明!" }
怎么在html里写 js代码来读取?最好还是给个解决方法吧,不要说思路。
index.js
//宣告App Main
var appMain = angular.module('appMain', []);
appMain.controller('appPortalController', ["$scope", "$http", "$window", function ($scope, $http, $window) {
// appType選單
$scope.appTypeOption = [
{ name: "Web", value: 1 },
{ name: "WPF", value: 2 },
{ name: "App", value: 3 }
];
//輸入時必須做資料驗證
// appId 在Server端產生新增時不用輸入
// appName 欄位大小 varchar 100
// appType 必選
// description 欄位大小 varchar 200
//$scope.rows = [
////var rows = [
// { appId: 1, appName: "會計系統1" , appType: 1, description: "應用系統說明!" },
// { appId: 2, appName: "會計系統2", appType: 2, description: "應用系統說明!" },
// { appId: 3, appName: "會計系統3", appType: 3, description: "應用系統說明!" },
// { appId: 4, appName: "會計系統4", appType: 3, description: "應用系統說明!" },
// { appId: 5, appName: "會計系統5", appType: 2, description: "應用系統說明!" },
// { appId: 6, appName: "會計系統6", appType: 1, description: "應用系統說明!" },
// { appId: 7, appName: "會計系統7", appType: 2, description: "應用系統說明!" },
// { appId: 8, appName: "會計系統8", appType: 1, description: "應用系統說明!" }
//];
var rows = [
{ appId: 1, appName: "會計系統1", appType: 1, description: "應用系統說明!" },
{ appId: 2, appName: "會計系統2", appType: 2, description: "應用系統說明!" },
{ appId: 3, appName: "會計系統3", appType: 3, description: "應用系統說明!" },
{ appId: 4, appName: "會計系統4", appType: 3, description: "應用系統說明!" },
{ appId: 5, appName: "會計系統5", appType: 2, description: "應用系統說明!" },
{ appId: 6, appName: "會計系統6", appType: 1, description: "應用系統說明!" },
{ appId: 7, appName: "會計系統7", appType: 2, description: "應用系統說明!" },
{ appId: 8, appName: "會計系統8", appType: 1, description: "應用系統說明!" }
];
}]);
index.html
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" data-ng-app="appMain"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Angularjs Sample1</title> <!--JQuery--> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <!--angularjs--> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.min.js"></script> <!--bootstrap--> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.1/js/bootstrap.min.js"></script> <link rel="stylesheet" href="http://localhost:12414/netdna.bootstrapcdn.com/bootstrap/3.0.1/css/bootstrap.min.css" type="text/css" /> <link href="bootstrap/css/bootstrap.css" rel="stylesheet" /> <link href="bootstrap/css/bootstrap-theme.min.css" rel="stylesheet" /> <link href="bootstrap/css/bootstrap-theme.css" rel="stylesheet" /> <!--index.js--> <script type="text/javascript" src="index.js"></script> <script type="text/javascript"> function test() { alert(rows[2].appName + "--" + rows[2].appType); } function test2() { for (var i = 0; i < rows.length; i++) { alert(rows[i].appName + "--" + rows[i].appType); } } //function handleJson() { //var j = { // "name": "Michael", "address": // { "city": "Beijing", "street": " Chaoyang Road ", "postcode": 100025 } //}; //document.write(j.name); //document.write(j.address.city); //var strJSON = "{name:'rows'}";//得到的JSON //var obj = eval("(" + strJSON + ")");//转换后的JSON对象 //alert(obj.name.appName);//json name //function getData() { // $.ajax({ // url: "xxx.php", // success: function (jsondata) { // output(jsondata); // } // }); //} //$.getJSON("AppInfo.json", function (result) { // $.each(result, function (1, field) { // $("p").append(field + " "); // }); //}); //$.getJSON("Index.js", function (row) { // alert("JSON Data: " + rows[3].appName); //}); //$(function () { // $.each(eval(appMain.rows), function (key, value) { // alert(value.appId); // }); //}) //alert(rows[2].appName + "--" + rows[2].appType); //for (var i = 0; i < appMain.rows.length; i++) { // alert(appMain.rows[i].appName); //} //} </script> </head> <body data-ng-controller="appPortalController"> <input type="button" value="test" onclick="test()"/> <input type="button" value="test2" onclick="test2()"/> <hr /> <div style="width: 830px; margin-left: auto; margin-right: auto"> <!--表格模块--> <div style="width: 400px; height: 400px; float: left" class="table-responsive"> <!--搜索框--> <table class="table table-striped table-bordered table-condensed table-hover"> <thead> <tr> <th>AppId</th> <th>AppName</th> </tr> </thead> <tbody> <tr data-ng-repeat="row in rows | filter:query"> <td>{{row.appId}}</td> <td>{{row.appName}}</td> </tr> </tbody> </table> </div> <!--表单模块--> <div style="width: 400px; float: right"> <form class="form-horizontal"> <fieldset> <div class="control-group"> <div class="controls"> <button class="btn btn-primary" onclick ="handleJson();">新增</button> <button class="btn btn-warning">修改</button> <button class="btn btn-danger">删除</button> <button class="btn btn-success">保存</button> </div> </div> <div class="control-group"> <label class="control-label" for="input01">AppId</label> <div class="controls"> <input type="text" placeholder="请输入AppId" class="input-xlarge"> <!--<p class="help-block">这里是验证提示</p>--> </div> <label class="control-label" for="input01">AppName</label> <div class="controls"> <input type="text" placeholder="请输入AppName" class="input-xlarge"> <!--<p class="help-block">这里是验证提示</p>--> </div> <label class="control-label">AppType</label> <div class="controls"> <select class="input-xlarge"> <option data-ng-repeat="type in appTypeOption">{{type.name}}</option> </select> </div> </div> <div class="control-group"> <label class="control-label">Description</label> <div class="controls"> <div class="textarea"> <textarea type="" class=""> </textarea> </div> </div> </div> </fieldset> </form> </div> </div> </body> </html>
创建一个脚本元素,加载index.js脚本,这样就会执行$.scope.rows=[]语句,可以获取到该对象。
你直接在你需要的页面引入这个index.js文件,那么你这个$scope.rows不就是一个全局的变量了吗?然后怎么读取,其实也就是你如何解析Json了……
我之前是很少搞网页的,所以对js语法什么的不熟悉。
我的页面已经加载了<script src="index.js"></script>
。$scope.rows是一个全局的变量了,要怎么用呀?
我在一个 button的 onclick时间调用了自己写的一个js函数
<script type="text/javascript">
function handleJson()
{
alert(rows.appname[1]);
}
这样会报错,提示rows没定义。加上$scope也不行
将index.js引入,再引入一个jquery包,使用each方法,加上eval方法循环就可以取得数据了
我就说不要思路啦,你说的我都搜了好多资料可就是不知道怎么弄
<script src="jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
<script src="1.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$.each(eval(bb), function(key, value) {
alert(value.appId);
});
})
</script>
bb是js中定义的变量
@dfgf:
var appMain = angular.module('appMain', []);
appMain.controller('appPortalController', ["$scope", "$http", "$window", function ($scope, $http, $window) {
// appType選單
$scope.appTypeOption = [
{ name: "Web", value: 1 },
{ name: "WPF", value: 2 },
{ name: "App", value: 3 }
];
//輸入時必須做資料驗證
// appId 在Server端產生新增時不用輸入
// appName 欄位大小 varchar 100
// appType 必選
// description 欄位大小 varchar 200
$scope.rows = [
{ appId: 1, appName: "會計系統1" , appType: 1, description: "應用系統說明!" },
{ appId: 2, appName: "會計系統2", appType: 2, description: "應用系統說明!" },
{ appId: 3, appName: "會計系統3", appType: 3, description: "應用系統說明!" },
{ appId: 4, appName: "會計系統4", appType: 3, description: "應用系統說明!" },
{ appId: 5, appName: "會計系統5", appType: 2, description: "應用系統說明!" },
{ appId: 6, appName: "會計系統6", appType: 1, description: "應用系統說明!" },
{ appId: 7, appName: "會計系統7", appType: 2, description: "應用系統說明!" },
{ appId: 8, appName: "會計系統8", appType: 1, description: "應用系統說明!" }
];
}]);
这是我的js脚本,你看是要把bb换成什么
换成rows未定义错误,换成appMian.rows,遍历出来的全是 undefined
$scope.rows换成 var bb就行了,因为$会与jquery中的$产生歧义
不是 undefined,是跑到jquery.js中报错
@Cornelius: 变量名改了还要报错吗,不会吧,应该是你那里写的有问题了
楼主请先把index.js的$scope.rows改成var rows,然后直接黏贴我的代码就可以运行了
<script type="text/javascript" src="index.js" ></script>
<script type="text/javascript">
function test(){
alert(rows[2].appName + "--" + rows[2].appType);
}
function test2(){
for(var i = 0; i < rows.length; i++){
alert(rows[i].appName + "--" + rows[i].appType);
}
}
</script>
</head>
<body>
<input type="button" value="test" onclick="test()"/>
<input type="button" value="test2" onclick="test2()"/>
</body>
$scope.rows改成var rows,报错 rows未定义
@Cornelius: 不可能,我刚刚测试了的,
var rows = [
{ appId: 1, appName: "會計系統1", appType: 1, description: "應用系統說明!" },
{ appId: 2, appName: "會計系統2", appType: 2, description: "應用系統說明!" },
{ appId: 3, appName: "會計系統3", appType: 3, description: "應用系統說明!" },
{ appId: 4, appName: "會計系統4", appType: 3, description: "應用系統說明!" },
{ appId: 5, appName: "會計系統5", appType: 2, description: "應用系統說明!" },
{ appId: 6, appName: "會計系統6", appType: 1, description: "應用系統說明!" },
{ appId: 7, appName: "會計系統7", appType: 2, description: "應用系統說明!" },
{ appId: 8, appName: "會計系統8", appType: 1, description: "應用系統說明!" }
];是这样的哦;
改好后,可以直接黏贴我的代码执行就好。
@wcheng123:
0x800a1391 - JavaScript 執行階段錯誤: 'rows' 未經定義
@Cornelius: 麻烦楼主把修改后的代码贴给我看看,因为我的代码可以运行的.
@wcheng123:
<script type="text/javascript" src="index.js"></script> <script type="text/javascript"> function test() { alert(rows[2].appName + "--" + rows[2].appType); } function test2() { for (var i = 0; i < rows.length; i++) { alert(rows[i].appName + "--" + rows[i].appType); } } //function handleJson() { //var j = { // "name": "Michael", "address": // { "city": "Beijing", "street": " Chaoyang Road ", "postcode": 100025 } //}; //document.write(j.name); //document.write(j.address.city); //var strJSON = "{name:'rows'}";//得到的JSON //var obj = eval("(" + strJSON + ")");//转换后的JSON对象 //alert(obj.name.appName);//json name //function getData() { // $.ajax({ // url: "xxx.php", // success: function (jsondata) { // output(jsondata); // } // }); //} //$.getJSON("AppInfo.json", function (result) { // $.each(result, function (1, field) { // $("p").append(field + " "); // }); //}); //$.getJSON("Index.js", function (row) { // alert("JSON Data: " + rows[3].appName); //}); //$(function () { // $.each(eval(appMain.rows), function (key, value) { // alert(value.appId); // }); //}) //alert(rows[2].appName + "--" + rows[2].appType); //for (var i = 0; i < appMain.rows.length; i++) { // alert(appMain.rows[i].appName); //} //} </script>
//宣告App Main
var appMain = angular.module('appMain', []);
appMain.controller('appPortalController', ["$scope", "$http", "$window", function ($scope, $http, $window) {
// appType選單
$scope.appTypeOption = [
{ name: "Web", value: 1 },
{ name: "WPF", value: 2 },
{ name: "App", value: 3 }
];
//輸入時必須做資料驗證
// appId 在Server端產生新增時不用輸入
// appName 欄位大小 varchar 100
// appType 必選
// description 欄位大小 varchar 200
//$scope.rows = [
////var rows = [
// { appId: 1, appName: "會計系統1" , appType: 1, description: "應用系統說明!" },
// { appId: 2, appName: "會計系統2", appType: 2, description: "應用系統說明!" },
// { appId: 3, appName: "會計系統3", appType: 3, description: "應用系統說明!" },
// { appId: 4, appName: "會計系統4", appType: 3, description: "應用系統說明!" },
// { appId: 5, appName: "會計系統5", appType: 2, description: "應用系統說明!" },
// { appId: 6, appName: "會計系統6", appType: 1, description: "應用系統說明!" },
// { appId: 7, appName: "會計系統7", appType: 2, description: "應用系統說明!" },
// { appId: 8, appName: "會計系統8", appType: 1, description: "應用系統說明!" }
//];
var rows = [
{ appId: 1, appName: "會計系統1", appType: 1, description: "應用系統說明!" },
{ appId: 2, appName: "會計系統2", appType: 2, description: "應用系統說明!" },
{ appId: 3, appName: "會計系統3", appType: 3, description: "應用系統說明!" },
{ appId: 4, appName: "會計系統4", appType: 3, description: "應用系統說明!" },
{ appId: 5, appName: "會計系統5", appType: 2, description: "應用系統說明!" },
{ appId: 6, appName: "會計系統6", appType: 1, description: "應用系統說明!" },
{ appId: 7, appName: "會計系統7", appType: 2, description: "應用系統說明!" },
{ appId: 8, appName: "會計系統8", appType: 1, description: "應用系統說明!" }
];
}]);
@Cornelius: var rows = [.....] 不能放在这个appMain.controller('appPortalController', ["$scope", "$http", "$window", function ($scope, $http, $window) {
里面,要放在这个标签外面。
@wcheng123:
在里面的话的话那要怎么引用呀
@Cornelius: 不好意思,appMain.controller('appPortalController', ["$scope", "$http", "$window", function ($scope, $http, $window) {你这个JS插件我也没用过,所以看不懂。
//宣告App Main
var appMain = angular.module('appMain', []);
appMain.controller('appPortalController', ["$scope", "$http", "$window", function ($scope, $http, $window) {
// appType選單
$scope.appTypeOption = [
{ name: "Web", value: 1 },
{ name: "WPF", value: 2 },
{ name: "App", value: 3 }
];
这个鸟毛东西有啥用,如果没用的话,你把那个变量直接复制到页面上用就行了,管他奶奶的
楼主用的angylarJS嘛,把
//$scope.rows = [ 激活,
var rows = [ 注释掉就可以啦,
不知道楼主还在不。。。