AngularJS属性报Cannot read property 'proEarningRate' of undefined错误

   最近做项目的过程中发现需要写的前端js比较多,于是在同事的推荐下开始学习前端的框架AngularJS。在使用过程中发现这个框架确实比jQuery要好用一些,但是也在学习过程中存在了一些问题。我发现在HTML页面中总是报proEarningRate这个属性没有定义。
   我的HTML代码如下:

<tr ng-repeat="rate in productInfo.proEarningRate">
    <td><input type="text" ng-model="rate.month" />td>
    <td><input type="text" ng-model="rate.incomeRate" />td>
tr>

   在网上也找了很多帖子,都是不行。我尝试了下面几种错误方式

$scope.productInfo.proEarningRate = []
$scope.productInfo.proEarningRate = [{"month" : "","incomeRate" : ""}]

  后来发现还是不行呀,看有的帖子说出现这个错误是由于AngularJS的执行是有顺序的。在HTML页面加载完以后,就会去调用controller,如果找不到HTML页面中的属性就会报错。因此,在controller前面定义需要的属性是没有错的。那么下面就需要解决另外一个问题,怎么定义这个属性?前面两种方式我试了都不行,后来我参考了AppController.js文件中其他的controller情况,其中有一个是这么定义的$scope.productInfo = “”。我在controller最上面加了一下,我发现我这么用不行。虽然不报找不到属性的错误了,但是模态窗中点击按钮没有给我添加一行。后来又试试换个方式

$scope.productInfo = []

  在controller上面采用这种方式初始化后,是没有问题的。折腾了半天的问题,原来就是一个初始化的问题。看来还得继续学习,不断进步。

参考资料
http://www.mamicode.com/info-detail-1740547.html
http://www.mamicode.com/info-detail-1565692.html

你可能感兴趣的:(前端日记)