角度范围变量在锚标记内不可见

时间:2014-12-11 17:44:37

标签: javascript angularjs

您好我是Angular的新手并试图通过以下方式调用带超链接的控制器方法:

<a href="" ng-click="getAssetDetail(contractNum)"> {{item.contractnum}} </a>

item.contractnum 是一个范围变量,当我从&#39; 标记中取出但在标记内部时,它是不可见的,我也想将它传递回控制器方法 getAssetDetail ,但无法弄清楚如何完成它。请建议。

编辑: 视图:

<tbody>
        <tr ng-repeat="item in pagedItems[currentPage] ">
            <td><a href="" ng-click="getAssetDetail(item.contractnum)">contract number {{item.contractnum}} </a> <br /> Serial Number:{{item.serialNum}} </td>
        </tr>
    </tbody>

控制器:

 $scope.getAssetDetail = function (contractNum) {

        //My Code Here
    }

 pagedItems=[{"contractnum":"123", "serialNum":"ABC1" },
             {"contractnum":"121", "serialNum":"ABC2" },
             {"contractnum":"124", "serialNum":"ABC3" },
             {"contractnum":"125", "serialNum":"ABC4" } 
            ]

2 个答案:

答案 0 :(得分:0)

如果你真的有pagedItems喜欢

pagedItems=[{"contractnum":"123", "serialNum":"ABC1" },
         {"contractnum":"121", "serialNum":"ABC2" },
         {"contractnum":"124", "serialNum":"ABC3" },
         {"contractnum":"125", "serialNum":"ABC4" } 
        ]

所以你错误地使用ngRepeat,因为传递给它像pagedItems[0]

这样的简单对象
{"contractnum":"123", "serialNum":"ABC1" }

所以 item 在这种情况下是123ABC1,它实际上没有属性contractnum和其他

解决你可以使用

ng-repeat="item in pagedItems"

或保存在pagedItems对象数组中,如[[{},...],[{},...],[{},...]]

或使用filter之类的limitTo来选择pagedItems

中仅需要的元素

答案 1 :(得分:0)

如果您的pagedItems数据仅用于一页数据,则需要将ng-repeat行更改为:

<tr ng-repeat="item in pagedItems">

如果您的pagedItems数据是每个页面的所有数据,那么您需要将pagedItems数据结构更改为具有每个页码的属性的对象,如:

pageItems = {
    "1": [{"contractnum": "121"}, ... etc],
    "2": [{"contractnum": "131"}, ... etc]
    ... etc ...
}  

或者作为一个数组数组,其中外部数组中的索引是页码(或者可能是pagenumber - 1),内部数组是每个页面的对象数组,如:

pageItems = [
    [{"contractnum": "121"}, ... etc],
    [{"contractnum": "131"}, ... etc]
]

您现有的ng-repeat行应该可以正常工作。