我正在构建一个将加载到多个网站上的第三方窗口小部件。我使用angular进行实现,使用构建脚本包装我的角度,这样它就不会干扰页面上可能使用的任何其他角度。
当我使用自己的自定义指令时,一切正常,但是当我尝试使用ng-show
加入加载指示符时,它有时会"没有工作。我跟踪了#34;有时"在已经使用angular"。
当页面插入页面时,页面的角度似乎仍然是数据绑定模板。有什么方法可以让我的dom成为页面角度的禁区吗?
ng-non-bindable
似乎可能有用,但如果我使用它,我就无法在它下面进行自举。
答案 0 :(得分:0)
您需要做的是以编程方式引导角度,而不是使用标记。
<html>
<body>
// other parts of your site
<div></div>
// your angular stuff
<div id='app' ng-controller="MyController">
Hello {{greetMe}}!
</div>
</body>
</html>
// your controller
angular.module('myApp', [])
.controller('MyController', ['$scope', function ($scope) {
$scope.greetMe = 'World';
}]);
// bootstrap angular programatically/manually
angular.element('#id').ready(function() {
angular.bootstrap(angular.element('#id'), ['myApp']);
});
不要忘记对你不想绑定的部分使用ng-non-bindable
答案 1 :(得分:0)
所以,这就是我所做的,这是令人厌恶的。 我更喜欢一个干净的答案,但这可以保护我的dom免受其他角度实例的影响。
首先,我用ng-non-bindable
包装整个dom元素。这可以防止页面级角度干扰它。
然后,我添加了以下内容,改编自AngularJS - how to override directive ngClick
var root = angular.module('rootModule', []);
root.config(function($provide){
$provide.decorator('ngNonBindableDirective',
['$delegate', function($delegate){
$delegate.shift();
return $delegate;
}]);
});
这删除了我的角度实例中ng-non-bindable
的实现。因此页面角度将忽略dom,但我的角度不会忽略它。我希望我不必在以后实施ng-non-bindable-really
。
有人请给我一个干净的答案,让我远离恐惧!