Javascript 角度-两个具有不同数据隔离范围的相同指令
在我的研究之后,我发现为了达到我的目标,我需要使用隔离范围。 让我给你一个小方案,看看我的应用程序现在是如何工作的 我有一个用ASP.NET编写的Web服务。我使用包装在函数中的jQuery.ajax接收JSON格式的数据:Javascript 角度-两个具有不同数据隔离范围的相同指令,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,在我的研究之后,我发现为了达到我的目标,我需要使用隔离范围。 让我给你一个小方案,看看我的应用程序现在是如何工作的 我有一个用ASP.NET编写的Web服务。我使用包装在函数中的jQuery.ajax接收JSON格式的数据: function getData(id) { var params = { "PlannerId": id }; jQuery.ajax({ type: "POST", url: "Default.as
function getData(id) {
var params = { "PlannerId": id };
jQuery.ajax({
type: "POST",
url: "Default.aspx/getData",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(params),
dataType: "json",
traditional: true,
async: false,
success: function (msg) {
$scope.allSeminars = allSeminars.concat(msg.d.SeminarDays);
}
});
return $scope.allSeminars;
}
该函数放在控制器中,比如说“dataController”
通常显示我的指令一次。我用从动态输入中获得的一些“id”调用我的函数(也在我的控制器中)
getData(jQuery('div[显示数据]).parent().find('input').val())代码>然后调用指令:
,它适用于一个数据和一个指令
现在我想在我的网页上显示我的指令两次,每一次都有不同的数据
我在指令中添加了隔离作用域:
rfg.directive("displayData", ['someService', function (someService) {
return {
restrict: "A",
scope: {
seminar: '=sem'
},
templateUrl: '../../template.tpl.html',
controller: 'dataController',
现在我显示我的指令如下:
<div display-data sem="sem0"></div><br>
<div display-data sem="sem1"></div>
var semId = jQuery('div[display-data]');
$scope.sem0 = getData(jQuery(semId[0]).parent().find('input').val());
$scope.sem1 = getData(jQuery(semId[1]).parent().find('input').val());
我还尝试在模板中的ng repeat中添加“研讨会”(指令范围中指定的研讨会),但没有成功
any1是否知道我做错了什么,以及如何用不同于直接从控制器调用负责该操作的函数的方式替换从.ajax获取数据
谢谢大家! 我认为您的所有逻辑都是错误的,您不应该将jQuery与AngularJS一起使用
您可以将jQuery.ajax()
替换为$http
或ngresource
->
->
不要这样做jQuery(semId[0]).parent().find('input').val()
使用ng model
->
这样,你就可以有一个良好的开端