【问题标题】:can't access ng-init value无法访问 ng-init 值
【发布时间】:2016-08-12 16:59:15
【问题描述】:

我是 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)



    }());

【问题讨论】:

  • 我们可以看看 JS 吗?
  • 进一步扩展 Danny 的回答:我们有 0 条线索是哪里出了问题,因为您没有向我们展示代码中最重要的方面。您有一个 javascript 问题,但您没有向我们展示 javascript。
  • 当然,我要添加 Js
  • 这个答案应该适合你stackoverflow.com/a/19517533/373655
  • Nihar,你能看到用户表吗?如果我没记错的话,您可以看到用户表,但看不到行总表,对吗??

标签: javascript angularjs ng-init


【解决方案1】:

尝试改变

var app=angular.module("Myapp",[]);

var app=angular.module("myApp",[]);

这是一个有效的fiddle

编辑:
Naga 是正确的,它也适用于MyAppMyapp 不起作用的原因是 Angular 处理指令名称的方式。在 Javascript 方面,Angular 将你的名字转换为 camel case,这基本上意味着第一个字母是小写的,而变量中每个“单词”的下一个字母是大写的。当值以 HTML 表示时,它们遵循 破折号分隔 的 HTML 标准,其中每个字母都是小写,单词由 - 字符分隔。您也可以使用冒号 (:) 或下划线 (_),但最常用的是连字符。

当您在 Javascript 中编写 Myappmyapp 时,Angular 会将其规范化为 HTML 中的 myapp。但是当你有MyAppmyApp 时,它会在HTML 中变成my-app

您可以使用任何您喜欢的大小写,只要 HTML 和 Javascript 匹配即可。

【讨论】:

  • 它适用于任何情况,这不是 myApp 案例的问题 - codepen.io/nagasai/pen/OXdVzj 检查一次
  • 你能解释一下,为什么会这样吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 2015-11-07
  • 1970-01-01
相关资源
最近更新 更多