我有一个没有隔离范围的指令,他的模板的这一部分是:
<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
中传递此参数答案 0 :(得分:0)
感谢U Scott,你的答案是对的!
您不需要使用{{}}来使用该变量 纳克单击=&#39; addTag(filter.option)&#39 ;. ng-click是一个角度编译标签 所以知道ng-repeat中的角度变量--Scott