Javascript 如果编译中没有';不回答
我试图用angular元素创建元素并附加到某个元素。如果根据范围变量条件告诉新元素是否需要可见,则新元素有一个ng。但出于某种原因,它对变化没有反应。代码如下:Javascript 如果编译中没有';不回答,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我试图用angular元素创建元素并附加到某个元素。如果根据范围变量条件告诉新元素是否需要可见,则新元素有一个ng。但出于某种原因,它对变化没有反应。代码如下: return { restrict: 'A', scope: { object: '=on' }, compile: function(elem) { var td = angular.element('<td></td>' ), closeRow = angula
return {
restrict: 'A',
scope: {
object: '=on'
},
compile: function(elem) {
var td = angular.element('<td></td>' ),
closeRow = angular.element('<i class="fa fa-arrow-circle-right" ng-if="!object.open"></i>' ),
openRow = angular.element('<i class="fa fa-arrow-circle-down" ng-if="object.open"></i>');
td.append(closeRow ).append(openRow);
elem.append(td);
return link;
}
}
function link($scope, elem) {
$scope.object.open = false;
elem.on( "click", function() {
$scope.$apply( function() {
$scope.object.open = ! $scope.object.open;
});
});
}
返回{
限制:“A”,
范围:{
对象:'=on'
},
编译:函数(elem){
var td=角度元素(“”),
closeRow=角度元素(“”),
openRow=角度元素(“”);
td.append(closeRow).append(openRow);
附加元素(td);
返回链接;
}
}
功能链接($scope,elem){
$scope.object.open=false;
元素打开(“单击”,函数(){
$scope.$apply(函数(){
$scope.object.open=!$scope.object.open;
});
});
}
}
以及html:
<tr slide-toggle-row on="post">
<td>{{post.title}}</td>
<td>{{post.text}}</td>
</tr>
<tr>
{{post.title}
{{post.text}
您不应该为此使用编译函数。尝试使用link function+$compile service注入与范围对象正确连接的HTML:
return {
restrict: 'A',
scope: {
object: '=on'
},
link: function(scope, elem) {
var td = angular.element('<td></td>'),
closeRow = angular.element('<i class="fa fa-arrow-circle-right" ng-if="!object.open"></i>'),
openRow = angular.element('<i class="fa fa-arrow-circle-down" ng-if="object.open"></i>');
td.append(closeRow).append(openRow);
$compile(td)(scope);
elem.append(td);
scope.object.open = false;
elem.on("click", function() {
scope.$apply(function() {
scope.object.open = !scope.object.open;
});
});
}
}
返回{
限制:“A”,
范围:{
对象:'=on'
},
链接:功能(范围、要素){
var td=角度元素(“”),
closeRow=角度元素(“”),
openRow=角度元素(“”);
td.append(closeRow).append(openRow);
$td(范围);
附加元素(td);
scope.object.open=false;
元素打开(“单击”,函数(){
作用域$apply(函数(){
scope.object.open=!scope.object.open;
});
});
}
}
演示:仅供参考,不要调用链接函数的scope
$scope
。它不进行提供者查找,所以只需将其称为scope
。