没有从我的模板中调用指令的隔离范围函数
directive's isolate scope function is not being called from my template
我有一个指令,不幸的是,我从模板中进行的调用没有传递到模板本身。为了对此进行测试,我实际上创建了另一个名为 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>
如能帮助解决此问题,我们将不胜感激。
谢谢
我前段时间遇到了这个奇怪的错误。
这是因为以下因素的组合:
replace: true
,
- 隔离范围,
- 具有元素嵌入的模板的根元素(由于
ng-repeat
,但对于 ng-if
也是如此)。
错误是 replace
"breaks" 在该元素上创建的范围。
无论如何,解决方法是添加一个根元素来包装模板中的 ng-repeat
ed 元素:
template: '<div><div ng-repeat="segment in seg">...</div></div>'
或 删除 replace: true
,因为它已被弃用。
我有一个指令,不幸的是,我从模板中进行的调用没有传递到模板本身。为了对此进行测试,我实际上创建了另一个名为 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>
如能帮助解决此问题,我们将不胜感激。 谢谢
我前段时间遇到了这个奇怪的错误。
这是因为以下因素的组合:
replace: true
,- 隔离范围,
- 具有元素嵌入的模板的根元素(由于
ng-repeat
,但对于ng-if
也是如此)。
错误是 replace
"breaks" 在该元素上创建的范围。
无论如何,解决方法是添加一个根元素来包装模板中的 ng-repeat
ed 元素:
template: '<div><div ng-repeat="segment in seg">...</div></div>'
或 删除 replace: true
,因为它已被弃用。