Javascript 如何在没有指令的情况下添加dom
如何在不使用指令的情况下使用Angularjs添加dom。相信我的话,在这种情况下我不能使用指令。现在我正在使用jQuery添加dom,但是我找不到一种方法来重新编译它,以便Angularjs知道如何处理它。我更喜欢使用Angularjs添加dom,因为我认为这样编译会更容易,但我真的不知道。添加dom后,如何在没有控制器的情况下编译它。我只有一个注册的应用程序模块 我试图做的一个例子是在这个JSFIDLE中:Javascript 如何在没有指令的情况下添加dom,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,如何在不使用指令的情况下使用Angularjs添加dom。相信我的话,在这种情况下我不能使用指令。现在我正在使用jQuery添加dom,但是我找不到一种方法来重新编译它,以便Angularjs知道如何处理它。我更喜欢使用Angularjs添加dom,因为我认为这样编译会更容易,但我真的不知道。添加dom后,如何在没有控制器的情况下编译它。我只有一个注册的应用程序模块 我试图做的一个例子是在这个JSFIDLE中: 您永远不应该在指令之外进行dom操作,也永远不需要这样做。然而,既然你已经说服了自己
您永远不应该在指令之外进行dom操作,也永远不需要这样做。然而,既然你已经说服了自己:
//inject the $compile service into the controller
app.controller('myCtrl', function($scope, $compile) {
//create the markup
var $x = $('<p>{{foo}}</p>');
$('body').append($x);
//$compile it with the scope
$compile($x)($scope);
});
根据您的更新:
var app = angular.module('app',[]);
var testCtrl = function($scope) {
$scope.foo = 'See, I loaded!';
};
app.controller('testCtrl',['$scope',testCtrl]);
app.directive('myDirective', function() {
return {
template: '<div ng-controller="testCtrl">{{foo}}</div>'
};
});
这可以通过angularjs来完成。在ng的帮助下,包含和延迟加载 例如,我有一个控制器ModulesCtrl,它加载到其他控制器的模块中 模块化
app.controller('ModulesCtrl',['$rootScope','$scope',function ModulesCtrl($rootScope,$scope) {
$scope.modules = [];
$scope.data = {
modules:[]
};
//Called after lazy loading the controllers js file
//otherwise you will get undefined function errors etc
function addModule(){
$scope.data.modules.push({
template:'/templates/modules/test.template',
settings:{name:"Test"}
});
}
}]);
ModulesCtrl元件
<div ng-controller="ModulesCtrl" ng-position="top">
<div ng-repeat="module in data.modules" ng-include src="module.template"></div>
</div>
延迟加载的控制器必须如下所示:
angular.module('app').controllerProvider.register('SomeLazyController', ['$scope'],function($scope)
{
$scope.key = '...';
});
添加dom意味着什么?添加我假设的元素?你能提供一个代码示例吗?我想我们需要更多的上下文。我认为你问的答案是错误的。请解释为什么你不能使用指令,我们不能只听取别人的意见,否则我们在试图解决问题时可能会遗漏一些东西。正如Rob所说的,显示一些代码,以便我们确切地知道您想要什么。所以您想要的是动态添加一个控制器元素?这仍然使用jQuery,这很好,因为他已经有了它。但是如果没有,可以用var$x=angular.element'{{foo}}'替换标记行@当然是JonathanRowny,但他说他正在用jQuery进行dom操作。我强调这是完全错误的。我回答这个问题是因为我可以。问题是我正在构建一个插件,假设用户不知道angularjs,也不想知道angularjs来使用它。我没有任何控制器,也不想让用户自己添加指令。控制器和指令通过jQueryDOM添加,然后有望重新编译。我正试图找出如何重新编译它。为什么用户必须添加它?为什么不把它包含在插件的源代码中?@Mr.Student我仍然不知道你在说什么,但我用一个指令重新制作了你的演示,没有jQuery。这正是我想要的。谢谢
<div ng-controller="TestCtrl">
this is a test template
</div>
(function()
{
var app = angular.module('app', []);
app.config(function($routeProvider, $controllerProvider, $compileProvider, $filterProvider, $provide)
{
app.controllerProvider = $controllerProvider;
app.compileProvider = $compileProvider;
app.routeProvider = $routeProvider;
app.filterProvider = $filterProvider;
app.provide = $provide;
// Register routes with the $routeProvider
});
})();
angular.module('app').controllerProvider.register('SomeLazyController', ['$scope'],function($scope)
{
$scope.key = '...';
});