无法访问初始值
can't access ng-init value
我是 Angular.js 的新手。尝试打印总行数但无法访问 ng-init
变量 (ct)。最后一个 span 标签没有显示 {{ct}} 的值。我错过了什么吗?
<div id="test-area" ng-controller="mycontroller" >
<input type="number" step="1" max="5" min="1" ng-model="count" style="width:50px;"/>
<input type="number" step="1" max="4" min="0" ng-model="indexFrom" style="width:50px;"/>
<table class="tab1">
<thead>
<th>Name</th> <th>Id</th> <th>Address</th> <th>Number</th>
<th>Date</th>
</thead>
<tr ng-repeat="user in users | limitTo:count:indexFrom " ng-init="parent=user;$parent.ct=$index">
<td>{{user.name | uppercase}}</td>
<td> {{user.id | number }}</td>
<td>{{user.address |lowercase}}</td>
<td ng-bind="parent.marks[0].it |currency:'$'">
</td>
<td class="ng-bind:user.bs | date:'dd/MM/yyyy'">
</td>
</tr>
</table>
<br/>
<span class="gray">Total Row Number : {{ct}} | From {{indexFrom}} to {{indexFrom+count}} </span>
<br/>
</div>
js :
(function(){
var app=angular.module("Myapp",[]);
var mycontrol=function($scope){
$scope.users=users;
$scope.increment=increment;
$scope.change=change;
$scope.count=3;
$scope.indexFrom=0;
}
//marks increment
var increment=function(marks){
marks.it+=1;
}
//id increment
var change=function(num){
num.id=Number(num.id)+1;
}
var users=[{
name:"Nihar",
id:"123",
address:"New Town",
bs:new Date("April 30 1993"),
marks:[{it:90},{it:88},{it:97}]
},{
name:"Nilanjan",
id:"194",
address:"Baguiati",
bs:new Date("July 20 1993"),
marks:[{it:94},{it:65},{it:82}]
},{
name:"Raktim",
id:"129",
address:"Tegharia",
bs:new Date("September 17 1993"),
marks:[{it:97},{it:81},{it:79}]
},{
name:"Kaushik",
id:"126",
address:"Howrah",
bs:new Date("October 10 1992"),
marks:[{it:81},{it:89},{it:78}]
},{
name:"Abhishek",
id:"287",
address:"Dum Dum",
bs:new Date("December 25 1994"),
marks:[{it:91},{it:68},{it:87}]
}];
app.controller("mycontroller",mycontrol)
}());
尝试改变
var app=angular.module("Myapp",[]);
到
var app=angular.module("myApp",[]);
这是一个有效的 fiddle。
编辑:
Naga 是正确的,它也适用于 MyApp
。 Myapp
不起作用的原因是 Angular 处理指令名称的方式。在 Javascript 方面,Angular 将您的名字转换为 驼峰式 ,这基本上意味着第一个字母是小写的,每个字母的下一个字母 "word" 在变量中是大写的。当值以 HTML 表示时,它们遵循 HTML 标准,即 破折号分隔 ,其中每个字母均为小写,单词由 [=14] 分隔=] 字符。您也可以使用冒号 (:
) 或下划线 (_
),但连字符是最常见的。
当您在 Javascript 中写入 Myapp
或 myapp
时,Angular 会将其标准化为 HTML 中的 myapp
。但是当你有 MyApp
或 myApp
时,它在 HTML.
中变成 my-app
只要 HTML 和 Javascript 匹配,您可以使用任何大小写。
我是 Angular.js 的新手。尝试打印总行数但无法访问 ng-init
变量 (ct)。最后一个 span 标签没有显示 {{ct}} 的值。我错过了什么吗?
<div id="test-area" ng-controller="mycontroller" >
<input type="number" step="1" max="5" min="1" ng-model="count" style="width:50px;"/>
<input type="number" step="1" max="4" min="0" ng-model="indexFrom" style="width:50px;"/>
<table class="tab1">
<thead>
<th>Name</th> <th>Id</th> <th>Address</th> <th>Number</th>
<th>Date</th>
</thead>
<tr ng-repeat="user in users | limitTo:count:indexFrom " ng-init="parent=user;$parent.ct=$index">
<td>{{user.name | uppercase}}</td>
<td> {{user.id | number }}</td>
<td>{{user.address |lowercase}}</td>
<td ng-bind="parent.marks[0].it |currency:'$'">
</td>
<td class="ng-bind:user.bs | date:'dd/MM/yyyy'">
</td>
</tr>
</table>
<br/>
<span class="gray">Total Row Number : {{ct}} | From {{indexFrom}} to {{indexFrom+count}} </span>
<br/>
</div>
js :
(function(){
var app=angular.module("Myapp",[]);
var mycontrol=function($scope){
$scope.users=users;
$scope.increment=increment;
$scope.change=change;
$scope.count=3;
$scope.indexFrom=0;
}
//marks increment
var increment=function(marks){
marks.it+=1;
}
//id increment
var change=function(num){
num.id=Number(num.id)+1;
}
var users=[{
name:"Nihar",
id:"123",
address:"New Town",
bs:new Date("April 30 1993"),
marks:[{it:90},{it:88},{it:97}]
},{
name:"Nilanjan",
id:"194",
address:"Baguiati",
bs:new Date("July 20 1993"),
marks:[{it:94},{it:65},{it:82}]
},{
name:"Raktim",
id:"129",
address:"Tegharia",
bs:new Date("September 17 1993"),
marks:[{it:97},{it:81},{it:79}]
},{
name:"Kaushik",
id:"126",
address:"Howrah",
bs:new Date("October 10 1992"),
marks:[{it:81},{it:89},{it:78}]
},{
name:"Abhishek",
id:"287",
address:"Dum Dum",
bs:new Date("December 25 1994"),
marks:[{it:91},{it:68},{it:87}]
}];
app.controller("mycontroller",mycontrol)
}());
尝试改变
var app=angular.module("Myapp",[]);
到
var app=angular.module("myApp",[]);
这是一个有效的 fiddle。
编辑:
Naga 是正确的,它也适用于 MyApp
。 Myapp
不起作用的原因是 Angular 处理指令名称的方式。在 Javascript 方面,Angular 将您的名字转换为 驼峰式 ,这基本上意味着第一个字母是小写的,每个字母的下一个字母 "word" 在变量中是大写的。当值以 HTML 表示时,它们遵循 HTML 标准,即 破折号分隔 ,其中每个字母均为小写,单词由 [=14] 分隔=] 字符。您也可以使用冒号 (:
) 或下划线 (_
),但连字符是最常见的。
当您在 Javascript 中写入 Myapp
或 myapp
时,Angular 会将其标准化为 HTML 中的 myapp
。但是当你有 MyApp
或 myApp
时,它在 HTML.
my-app
只要 HTML 和 Javascript 匹配,您可以使用任何大小写。