完全从html中解耦角度

时间:2015-10-14 17:45:35

标签: javascript jquery html angularjs

是否可以将完全角度代码与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');

我需要对getByIdsetNgAttribute进行一些实施,如果可能的话,这将与角度很好地配合使用。

我只需要几个ng属性,例如ng-modelng-showng-click,所以我希望这是可行的。

2 个答案:

答案 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-modelng-showng-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只是提供了便利,但听起来你不需要庞大的框架。