在指令中调用链接内的函数

时间:2014-12-18 18:05:23

标签: javascript angularjs

我的指令中有这个链接功能:

link: function (scope) {
    scope.search = function () {
        PessoaService.search(scope.filter, ['nome']).then(function (result) {
            scope.firstList = result.values;
        })
    }
    scope.add = function (pessoa) {
        var index = this.indexOf(pessoa);
        scope.secondList = scope.secondList || [];
        scope.secondList.push(pessoa);
    }

    scope.remove = function (pessoa) {
        var index = this.indexOf(pessoa);
        scope.secondList.splice(index, 1);
    }

    scope.indexOf = function (pessoa) {
        scope.secondList = scope.secondList || [];
        var secondlistAux = scope.secondList;
        for (var i = 0; i < secondlistAux.length; i++) {
            if (secondlistAux[i].id === pessoa.id) {
                return i;
            }
        }
        return -1;
    }

    scope.contains = function (pessoa) {
        return this.indexOf(pessoa) >= 0
    }
}

如何调用函数scope.search()以便初始化数组?因为在输入内容之前我无法看到数组!谢谢:))

1 个答案:

答案 0 :(得分:0)

在方法之外初始化变量。

link: function (scope) {
    scope.firstList = scope.firstList || [];
    scope.secondList = scope.secondList || [];

    scope.search = function () {
        PessoaService.search(scope.filter, ['nome']).then(function (result) {
            scope.firstList = result.values;
        })
    }
    scope.add = function (pessoa) {
        var index = this.indexOf(pessoa);
        scope.secondList.push(pessoa);
    }

    scope.remove = function (pessoa) {
        var index = this.indexOf(pessoa);
        scope.secondList.splice(index, 1);
    }

    scope.indexOf = function (pessoa) {
        var secondlistAux = scope.secondList;
        for (var i = 0; i < secondlistAux.length; i++) {
            if (secondlistAux[i].id === pessoa.id) {
                return i;
            }
        }
        return -1;
    }

    scope.contains = function (pessoa) {
        return this.indexOf(pessoa) >= 0
    }
}

<强>更新

您可以在scope.search()函数的末尾调用link ..

link: function (scope) {
    /*all the code you have here*/

    // and at the end
   scope.search();
}