有没有办法用 ng-view 做同样的事情
如果不编辑 Angular 的源代码或其他东西,我想不出办法。 replace 用于 custom 指令,而不是(必然)内置指令。
或更一般地说,任何 Angular 指令?感谢您的帮助!
同样的事情。但是你不会想用 any 指令来做,看看你如何在一个元素中拥有多个指令。我想您可能希望使用所有模板指令来执行此操作(因为我认为每个元素只能有一个),但是,再次,如果不编辑指令的源,我想不出一种方法来做到这一点。
另外,请注意 Angular 已声明替换 "will be removed in next major release",因此最好不要依赖它。
但是,如果您愿意,您可以创建自己的 ngInclude/ngView-esque 指令,该指令在没有包装标签的情况下呈现模板。
一个幼稚且可能有问题的(或至少是低效的)可能看起来像:
app.directive('myRender', function ($compile, $http) {
return {
restrict: 'E',
link: function (scope, element, attrs) {
var newScope;
var newElement;
attrs.$observe('url', function (value) {
if (value) {
$http.get(value).then(function (result) {
if (newElement !== undefined) {
newElement.remove();
}
newElement = angular.element(result.data);
if (newScope !== undefined) {
newScope.$destroy();
}
newScope = scope.$new();
$compile(newElement)(newScope);
element.parent().append(newElement);
});
}
})
}
}
});
http://plnkr.co/edit/Vm96f2rQsT2PX1C3rgK8?p=preview
如果你想使用 angular,我的第一个建议是让你的 css 适应 angular。
我的另一个建议是使用 Angular 完成整个应用程序,而不是事后添加。