我的工作使用jQuery的遗留系统上,不得不添加AngularJS为特定的功能,但是即时通讯在更新范围的问题。AngularJS/jQuery的 - 更新范围
基本上,我们有一个下拉菜单,当您选择一个选项时,我们会触发一个Ajax调用来获取数组或对象。然后将这个对象数组存储在一个全局变量中,比如var myObjs。基本上使用Angular的ng-repeat服务,我需要遍历这些并呈现一个列表。
我是新来的角,所以我不知道这是否是做的方式。我做的是这样设定范围:
$ scope.myObjs = myObjs;
然而,通过这样做,范围没有改变的。
有人能告诉我如何做到这一点吗?我试图环顾四周,但发现它有点hacky在同一页面上混合使用AngularJS & jQuery。
编辑:添加样本片段。基本上改变下拉im发射ajax调用,并将响应(这是一个对象数组)存储在myObjs变量中。然后我试图将范围设置为这个变量的值。关于我引导Angular的方式,这是由于8年前的传统系统的限制。
var myObjs = null;
$(function() {
$("#myHeader").on("change", "#mySelect", function() {
// perform Ajax Call
});
});
function ajaxCallback(data) {
myObjs = data;
}
var myModule = angular.module("GetObjsModule", []);
myModule.controller("MyController", function($scope) {
$scope.objs = myObjs;
});
angular.element(document).ready(function() {
var myDiv = $("#myDiv");
angular.bootstrap(myDiv, ["GetObjsModule"]);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js">
</script>
<div id="myHeader">
<select id="mySelect">
<option value="1">Value 1</option>
<option value="2">Value 2</option>
<option value="3">Value 3</option>
</select>
</div>
<div id="myDiv">
<ul id="myList" ng-controller="MyController">
<li ng-repeat="x in objs">
<div class="accordionHeader">
{{x.name}} {{x.surname}}: {{x.tel}}
</div>
<div>
<p>
Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum
a velit eu ante scelerisque vulputate.
</p>
</div>
</li>
</ul>
</div>
你能告诉你的代码PLZ? – Zee
如果您使用的不是angularjs服务(即$ HTTP等),你要去角消化周期之外被执行,则需要更改范围后触发周期:即'$范围$适用()' –
@ PatrickEvans确实没有使用$ http服务。 – user1809790