我无法让ng-transclude在ng-switch-default指令中工作。这是我的代码:
指示:
.directive('field', ['$compile', function($complile) {
return {
restrict: 'E',
scope: {
ngModel: '=',
type: '@',
},
transclude: true,
templateUrl: 'partials/formField.html',
replace: true
};
}])
partials / formField.html
<div ng-switch on="type">
<input ng-switch-when="text" ng-model="$parent.ngModel" type="text">
<div ng-switch-default>
<div ng-transclude></div>
</div>
</div>
我这样称呼…
<field type="other" label="My field">
test...
</field>
产生错误:
[ngTransclude:orphan] Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found.
它可以正常工作,在ng-switch指令之外,但是我对如何使它工作感到迷惑。有什么建议?
编辑:这是一个实时演示:http :
//plnkr.co/edit/3CEj5OY8uXMag75Xnliq?p=preview
摘自:Github问题
问题在于ng-switch也使用了transclude,这会导致错误。
在这种情况下,您应该创建一个使用正确的$ transclude函数的新指令。为此,请将$
transclude存储在父指令的控制器中(在您的case字段中),并创建一个引用该控制器并使用其$ transclude函数的新指令。
在您的示例中:
.directive('field', function() {
return {
....
controller: ['$transclude', function($transclude) {
this.$transclude = $transclude;
}],
transclude: true,
....
};
})
.directive('fieldTransclude', function() {
return {
require: '^field',
link: function($scope, $element, $attrs, fieldCtrl) {
fieldCtrl.$transclude(function(clone) {
$element.empty();
$element.append(clone);
});
}
}
})
在html中,您只需使用<div field-transclude>
而不是即可<div ng-transclude>
。
这是更新的插件:http
://plnkr.co/edit/au6pxVpGZz3vWTUcTCFT?p=preview
问题内容: 这是显示问题的小提琴。http://jsfiddle.net/Erk4V/1/ 如果我在ng-if内部有一个ng-model,就会出现该模型无法正常工作的情况。 我想知道这是一个错误还是误解了正确的用法。 问题答案: 与其他指令一样,该指令将创建子范围。请参见下面的脚本(或此jsfiddle) 因此,您的复选框将更改子作用域的内部,而不更改外部父作用域。 请注意,如果要修改父作用域中的
问题内容: 我正在开发Angular应用程序。我尝试使用ng-if并在 ng-repeat中 切换,但未成功。我有类似的数据: $ scope.comments =上面提到的数据 和我的HTML一样: 如何在Angular中实现此目标? 问题答案: 尝试环绕(,,)与报价:
问题内容: 我有这个reprohttp://embed.plnkr.co/nVCmukG5abpi1Y4ZHkrq,当我单击“ Title3”并在文本框中输入一个值时显示,尽管输入的值显示在UI中,当我单击“单击”按钮时,什么也没有绑定到范围属性$ scope.test。 我不知道ng-switch有什么问题,或者我做错了什么。帮助表示赞赏!!! http://embed.plnkr.co/nVC
问题内容: 我正在使用AngularJS,并且假设它可以工作(不起作用),我想获得的效果将类似于它将产生的效果。 视图 控制者 我意识到该代码将无法使用,因为它不可用,因为它将仅可用于每一行内的对象。该代码是为了让我了解正在尝试做的事情:即。我希望能够使用其类也基于条件的表行来创建,该条件取决于对行本身的范围功能的访问。。我意识到我 可以 在列上添加ng- class,但这很无聊。有人有更好的主意
问题内容: 嗨,我有一个简单的ng-repeat-start和end用例,并且工作正常,当我想添加一个内部ng-repeat时出现了问题。这是我的代码 内部ng-repeat到td元素中不起作用,在检查html源代码时看到ngRepeat注释,但未创建td元素。 我的丑陋的解决方法(假设我知道该向量的大小)是: 问题答案: 从那时起,我不确定是否使用角度1.1.6,并且在1.1.5或1.0.7
问题内容: 我想在内容更改时创建具有自定义行为的列表。我尝试为此创建一个指令,但是我对如何将ng-transclude与ng- repeat指令结合起来感到迷茫。有人可以让我走上正轨吗? HTML: Javascript: 我已经在这里工作了一部分 编辑: 条件: 该项目的模板必须在视图中定义,而不是在指令中定义,并且必须有权访问子作用域中的项目属性。理想情况下,我想像在ng-repeat指令中那