是否可以将完全角度代码与html分离,以便我在html中没有任何ng属性。
我希望有一个简单的纯HTML页面,只有表单元素上的id 并引用我的基于角度的javascript所在的脚本。
所以改为写点:
<input id="somefieldid"
ng-model="myctrl.value1" />
我希望:
<input id="somefieldid" />
in html
并在脚本中执行以下操作:
getById('somefieldid').setNgAttribute('ng-model','myctrl.value1');
我需要对getById
和setNgAttribute
进行一些实施,如果可能的话,这将与角度很好地配合使用。
我只需要几个ng属性,例如ng-model
,ng-show
和ng-click
,所以我希望这是可行的。
答案 0 :(得分:1)
你当然可以这样做,但不应该需要。
我写了一个基本的例子,说明你可以做些什么,see the JSFiddle:
angular.module('app', []).run(function($compile, $rootScope) {
$rootScope.myModel = {someValue: 'abc123'};
var bodyElement = $("div#myContent");
var compileTime = $compile(bodyElement)($rootScope);
bodyElement.replaceWith(compileTime);
});
angular.element(document).ready(function() {
angular.bootstrap(document, ['app']);
});
如果你想使用控制器和指令,你当然可以扩展这个想法。在使用jQuery设置ngAttributes之后,您需要调用bodyElement.replaceWith(compileTime);
,以便angular可以重新处理DOM。
答案 1 :(得分:0)
ng-model
,ng-show
和ng-click
都可以使用vanilla js或jquery进行复制。
NG-模型:
document.getElementById("myTextarea").value
ng-click:document.getElementById('anchorID').onclick=function(){/* some code */}
ng-show:document.getElementById('myElement').style.display = "block";
Angular只是提供了便利,但听起来你不需要庞大的框架。