据我了解,使用服务操作DOM的做法很糟糕。应该为指令保留DOM操作。我想创建类似于模态的东西,其中调用服务来生成DOM元素。
E.I。
function MyController($sope, myModal) {
// Submit a form
$scope.submit = function() {
if (formIsValid) {
// do stuff
} else {
myModal.show({
templateUrl: 'sometemplate.html',
controller: 'MyModalController'
}).then(function() {
// do stuff
});
}
}
}
尝试考虑不同的方法来实现这一点,似乎最简单的方法是让服务将DOM元素注入页面 -
function MyModalService($http, $compile, $controller, $rootScope) {
this.show = function (options) {
var $scope = $rootScope.$new(true);
$controller(options.controller, {
$scope: $scope
});
$http.get(options).success(function(html) {
var ele = $compile(html)($scope);
// Bad practice? Alternatives?
angular.element('body').append(ele);
});
}
}
这可能看起来像小土豆,但我喜欢坚持一种模式,我喜欢打破模式或修改模式的理由。这是常见的还是有更好的方法来做到这一点?
答案 0 :(得分:0)
这听起来与角度引导程序的模态非常相似。
您可以在此处查看其实施情况:https://github.com/angular-ui/bootstrap/blob/master/src/modal/modal.js(参见第452行)