我有一个指令,不幸的是,我从模板中拨打的电话并没有通过模板本身。为了测试这个,我实际上创建了另一个名为helloWorld的范围变量,并尝试使用该字符串并显示它。此字符串也未显示。这与示波器和指令模板的脱节非常混乱。代码如下:
angular.module('application.directives').directive('addSegment', function() {
return {
restrict: 'E',
scope: {
addmodel:'=',
seg:'='
},
replace: true, // Replace with the template below
transclude: true,
link: function(scope, element, attrs) {
scope.helloWorld = "hello Worldly things";
scope.selectedsegment = function(s,add){
console.log("inside selectedsegment");
if(typeof add.selectedSegments === "undefined" ){
add.selectedSegments = [];
}
var ind = add.selectedSegments.indexOf(s.id);
if(ind === -1){
add.selectedSegments.push(s.id);
}else{
add.selectedSegments.splice(ind,1);
}
}
},
template: "<div ng-repeat='segment in seg|filter:{status:0}'><label>{{helloWorld}}</label><input type='checkbox' ng-click='selectedsegment(segment,addmodel)'/></div>"
};
});
来自我的html:
<add-segment addModel='addGainCreator' seg='segments'></add-segment>
非常感谢任何有关解决此问题的帮助。 感谢
答案 0 :(得分:0)
我前段时间遇到过这个奇怪的错误。
这是因为:
的组合replace: true
,ng-repeat
,但ng-if
也是如此)。 错误是replace
“打破”在该元素上创建的范围。
无论如何,修复方法是在模板中添加一个包含ng-repeat
ed元素的根元素:
template: '<div><div ng-repeat="segment in seg">...</div></div>'
或删除replace: true
,因为它无论如何都已被弃用。