将表行传递给Angular中的函数

时间:2015-02-13 19:02:34

标签: javascript angularjs

我是棱角分明的新手,我被告知它的伟大之处,但它也是令人烦恼的高学习曲线。我现在一直砸着我的头撞在墙上,好好用了3个小时的半个小时试图解决问题。

我也找不到任何文件。我要么不知道要搜索什么,要么就不再可能了。

function modalCtrl($scope, $modal) {

    $scope.openManageMainCd = function() {
        var modalInstance = $modal.open({
            templateUrl: 'views/modalManageMainCd.html',
            controller: ModalInstanceCtrl
        });
    };
    $scope.openLadders = function(e) {

        alert(e);
        var modalInstance = $modal.open({
            templateUrl: 'views/ladderModal.html',
            controller: LadderInstanceCtrl
        });
    };
};    

function LadderInstanceCtrl($scope) {
    $scope.ladder = GetLadderData(_facilityData.holdings);
};

function GetLadderData(holdings){
    var holdingData = [];

    angular.forEach(holdings, function(value, key) {
        if (value.type == 'Ladder') {
             angular.forEach(value.cds, function(value, key) {
                var obj = { type: value.type, name: value.name, amount: value.amount, rate: value.rate, maturityDate: value.maturityDate }
                holdingData.push(obj);
             });
        }
    });
    return holdingData;
};            

这个混乱的混乱是我用我的时间创造的。单击我桌面上的一行时,它会调用openLadders函数。现在,我已经尝试过把它发送到阳光下的所有东西,到目前为止还没有任何帮助。我想基本上发送它。我需要一行ID,我只想要那个ID。我试过了......

ng-click="openLadders(row) == function表示行未定义

ng-click="openLadders($event) ==我不知道我在看什么

ng-click="openLadders($index) ==不帮我

还有更多。 Angular的网站并没有详细说明我需要知道的内容,所以我无法在那里找到帮助。我在网站上浏览了两篇关于Angular的教程,这些教程让我相信它是可能的。

有人可以在这里提供任何帮助吗?我迷路了。

该表的构建如下:

<tr ng-repeat="holding in holdings" ng-if="holding.type == 'Ladder'" class="" ng-controller="modalCtrl" ng-click="openLadders()">
    <td><i class="icon-plus" ></i> {{holding.type}}</td>
    <td contenteditable="true">{{holding.name}}</td>
    <td>{{holding.maturityDate}}</td>
    <td>{{holding.amount | currency:"$"}}</td>
    <td>{{holding.rate | percentage:2}}</td>
</tr>

我似乎会有一个明显的跟进问题,一旦我从函数openLadders获得该信息到实际的LadderInstanceCtrl(),它就会发送该信息。因此,非常感谢对这两个主题的帮助。

非常感谢你。

1 个答案:

答案 0 :(得分:2)

你说对,Angular有一个学习曲线,但是一旦了解了范围界定的方法,就不会那么陡峭。

你非常接近你想要的,只需要将你需要的确切字段作为参数传递给函数,这可能与纯javascript有点不同。

您所描述的内容已解决(请注意ng-click指令):

<tr ng-repeat="holding in holdings" ng-if="holding.type == 'Ladder'" class="" ng-controller="modalCtrl" ng-click="openLadders(holding.id)">
    <td><i class="icon-plus" ></i> {{holding.type}}</td>
    <td contenteditable="true">{{holding.name}}</td>
    <td>{{holding.maturityDate}}</td>
    <td>{{holding.amount | currency:"$"}}</td>
    <td>{{holding.rate | percentage:2}}</td>
</tr>

在类似情况下,使用holding传递整个ng-click="openLadders(holding)"对象可能同样方便。尝试这个也可能是有益的,并看到行为。

希望这有帮助。