指令模板中的麻烦

时间:2015-12-09 15:31:08

标签: angularjs function scope directive param

我有一个没有隔离范围的指令,他的模板的这一部分是:

<li ng-repeat="filter in listFilters">
<p id="filter{{filter.option}}Container">
    <input ng-keypress="filterPress($event)" ng-model="filterTag['{{filter.option}}']" data-opt="{{filter.option}}" type="text" />
    <label for="filter{{filter.option}}">Filter</label>
    <button ng-click="addTag('{{filter.option}}')">OK</button>
</p>

我的控制器有这个:

mapCtrl.controller('mapCtrl', ['$scope', function ($scope, $http, $window, $sce, $compile) {
$scope.listTags = [];
$scope.filterTag = [];
$scope.addTag = function (opt) {
    if (typeof $scope.filterTag[opt] != "undefined" && $scope.filterTag[opt].trim() != "") {
        if (!$scope.listTags[opt]) {
            $scope.listTags[opt] = []
        }
        if ($scope.listTags[opt].indexOf($scope.filterTag[opt]) == -1) {
            $scope.listTags[opt].push($scope.filterTag[opt]);
            $scope.filterTag[opt] = "";
        }
        $scope.setMarkersVisible();
    }
}}])

所以,当使用调试器(chrome)显示结果HTML时,没关系,但如果我点击 addTag 这个功能不起作用。我在这个函数中首先添加了一个console.log(opt),然后控制台返回 {{filter.option}} ,或者在调试器中看到 addTag ( “myOpt”)

我在这个部分的相同指令中遇到了同样的问题(参见第一个html代码):

 ng-model="filterTag['{{filter.option}}']" 

使用调试器我看到 ng-model =“filterTag ['myOpt']” 但是如果我记录 filterTag ['myOpt'] 来自我的控制器 mapCtrl 未定义....

请帮助我:(

我指定:我必须在addTag

中传递此参数

1 个答案:

答案 0 :(得分:0)

感谢U Scott,你的答案是对的!

  

您不需要使用{{}}来使用该变量   纳克单击=&#39; addTag(filter.option)&#39 ;. ng-click是一个角度编译标签   所以知道ng-repeat中的角度变量--Scott