Javascript 为什么angularjs指令继承范围但不';是否不更改范围变量? (函数(){ “严格使用” var pagesize=5; var memberManager=angular.module('memberManager',['mydirective'],函数($interpolateProvider){ $interpolateProvider.startSymbol(“”); }) memberManager.constant('apiUri'{ getMembers:“/membermanage/get”, 费用:'/membermanage/charge', exchange:“/MemberManager/exchange” }); 工厂('managerService',函数($http,apiUri){ 返回{ getMembers:函数(数据){ 返回$http.get(apiUri.getMembers,{params:data}); }, 费用:功能(数据){ 返回$http.post(apiUri.charge,data); }, 交换:功能(数据){ 返回$http.post(apuri.exchange,data); } } }); memberManager.directive('modalWin',function(){ 返回{ 限制:“A”, 链接:功能(范围、要素、属性){ var modalWinId=attrs.targetid; var clickHandler=函数(){ var index=$(elem.attr('index'); 作用域:$apply(函数(){ scope.itemIndex=parseInt(索引); scope.chargeModel.index=parseInt(索引); }); $('#'+modalWinId).modal(); 作用域:$on('http:cash',函数(){ $('#'+modalWinId).modal('hide'); }); 作用域:$on('http:exchange',函数(){ $('#'+modalWinId).modal('hide'); }); }; $(elem).bind('click',clickHandler); } } }) 控制器('manCtrl',函数($scope,managerService,$rootScope,managerHelper){ $scope.isLoadingData=true; $scope.chargeModel={ 索引:0, 现金数量:0, 现金商店:'', 现金或其他物品:'' }; //要编辑哪个项目? $scope.itemIndex=0; $scope.test={ 索引:0 }; $scope.exchangeModel={ 交易所编号:0, 交换方式:1,//直接消费 exchange存储区:“”, exchange\u通行证:“” } $scope.loader={ 交换:错, 现金:假 }; $scope.exchange=函数(){ 警报($scope.itemIndex); $scope.loader.exchange=true; 风险值数据={ exchange\u编号:$scope.exchangeModel.exchange\u编号, exchange\u微信\u id:$scope.model[$scope.itemIndex].wc\u openid, exchange\u类型:$scope.exchangeModel.exchange\u类型 }; 控制台日志(数据); managerService.exchange(数据).success(函数(数据){ $scope.loader.exchange=false; $rootScope.$broadcast('http:exchange'); $scope.getData($scope.currentPageIndex); }) };
})();单击事件回调在Angular world外部执行。您需要使用Javascript 为什么angularjs指令继承范围但不';是否不更改范围变量? (函数(){ “严格使用” var pagesize=5; var memberManager=angular.module('memberManager',['mydirective'],函数($interpolateProvider){ $interpolateProvider.startSymbol(“”); }) memberManager.constant('apiUri'{ getMembers:“/membermanage/get”, 费用:'/membermanage/charge', exchange:“/MemberManager/exchange” }); 工厂('managerService',函数($http,apiUri){ 返回{ getMembers:函数(数据){ 返回$http.get(apiUri.getMembers,{params:data}); }, 费用:功能(数据){ 返回$http.post(apiUri.charge,data); }, 交换:功能(数据){ 返回$http.post(apuri.exchange,data); } } }); memberManager.directive('modalWin',function(){ 返回{ 限制:“A”, 链接:功能(范围、要素、属性){ var modalWinId=attrs.targetid; var clickHandler=函数(){ var index=$(elem.attr('index'); 作用域:$apply(函数(){ scope.itemIndex=parseInt(索引); scope.chargeModel.index=parseInt(索引); }); $('#'+modalWinId).modal(); 作用域:$on('http:cash',函数(){ $('#'+modalWinId).modal('hide'); }); 作用域:$on('http:exchange',函数(){ $('#'+modalWinId).modal('hide'); }); }; $(elem).bind('click',clickHandler); } } }) 控制器('manCtrl',函数($scope,managerService,$rootScope,managerHelper){ $scope.isLoadingData=true; $scope.chargeModel={ 索引:0, 现金数量:0, 现金商店:'', 现金或其他物品:'' }; //要编辑哪个项目? $scope.itemIndex=0; $scope.test={ 索引:0 }; $scope.exchangeModel={ 交易所编号:0, 交换方式:1,//直接消费 exchange存储区:“”, exchange\u通行证:“” } $scope.loader={ 交换:错, 现金:假 }; $scope.exchange=函数(){ 警报($scope.itemIndex); $scope.loader.exchange=true; 风险值数据={ exchange\u编号:$scope.exchangeModel.exchange\u编号, exchange\u微信\u id:$scope.model[$scope.itemIndex].wc\u openid, exchange\u类型:$scope.exchangeModel.exchange\u类型 }; 控制台日志(数据); managerService.exchange(数据).success(函数(数据){ $scope.loader.exchange=false; $rootScope.$broadcast('http:exchange'); $scope.getData($scope.currentPageIndex); }) };,javascript,angularjs,Javascript,Angularjs,})();单击事件回调在Angular world外部执行。您需要使用$apply: (function () { 'use strict' var pagesize = 5; var memberManager = angular.module('memberManager',['mydirective'],function ($interpolateProvider) { $interpolateProvider.startSymbol('<%'); $interpo
$apply
:
(function () {
'use strict'
var pagesize = 5;
var memberManager = angular.module('memberManager',['mydirective'],function ($interpolateProvider) {
$interpolateProvider.startSymbol('<%');
$interpolateProvider.endSymbol('%>');
})
memberManager.constant('apiUri', {
getMembers: '/membermanage/get',
charge: '/membermanage/charge',
exchange: '/membermanage/exchange'
});
memberManager.factory('managerService',function ($http,apiUri) {
return {
getMembers: function (data) {
return $http.get(apiUri.getMembers,{ params: data });
},
charge: function (data) {
return $http.post(apiUri.charge,data);
},
exchange: function (data) {
return $http.post(apiUri.exchange,data);
}
}
});
memberManager.directive('modalWin',function () {
return {
restrict: 'A',
link: function (scope,elem,attrs) {
var modalWinId = attrs.targetid;
var clickHandler = function () {
var index = $(elem).attr('index');
scope.$apply(function () {
scope.itemIndex = parseInt(index);
scope.chargeModel.index = parseInt(index);
});
$('#' + modalWinId).modal();
scope.$on('http:cash',function () {
$('#' + modalWinId).modal('hide');
});
scope.$on('http:exchange',function () {
$('#' + modalWinId).modal('hide');
});
};
$(elem).bind('click',clickHandler);
}
}
})
memberManager.controller('manCtrl',function ($scope,managerService,$rootScope,managerHelper) {
$scope.isLoadingData = true;
$scope.chargeModel = {
index: 0,
cash_num: 0,
cash_store: '',
cash_stuff: ''
};
// which item to be edit?
$scope.itemIndex = 0;
$scope.test = {
index: 0
};
$scope.exchangeModel = {
exchange_number: 0,
exchange_way: 1,// 直接消费
exchange_store: '',
exchange_pass: ''
}
$scope.loader = {
exchange: false,
cash: false
};
$scope.exchange = function () {
alert($scope.itemIndex);
$scope.loader.exchange = true;
var data = {
exchange_number: $scope.exchangeModel.exchange_number,
exchange_wechat_id: $scope.model[$scope.itemIndex].wc_openid,
exchange_type: $scope.exchangeModel.exchange_type
};
console.log(data);
managerService.exchange(data).success(function (data) {
$scope.loader.exchange = false;
$rootScope.$broadcast('http:exchange');
$scope.getData($scope.currentPageIndex);
})
};
试试这个:
demo.directive('testD',function(){
return {
restrict: 'A',
link: function(scope,elem,attr){
$(elem).click(function(){
scope.$apply(function(){
scope.val = 5;
});
});
}
}
});
但是如果“val”是“scope.model={val:0};那么works@Daniel.Woo您的指令语法无效。请查看我的更新。我已经更新了代码,请注意“$scope.itemIndex”…它没有更改,非常感谢“$scope.itemIndex”“在控制器中,我在指令中对其进行了更改,很抱歉您花时间发现这一点..因为我很担心..thx Again您的意思是您发现了问题?您的意思是双向绑定?但我没有定义隔离作用域,因此不需要定义对$scope的引用,对吗?
var demo = angular('demo',[]);
demo.directive('testD',function(){
restrict: 'A',
scope: {
'val': '=' // here the fix
},
link: function(scope,elem,attr){
$(elem).click(function(){
scope.val = 5;
});
}
});
demo.controller('testCtrl',function($scope){
$scope.val = 0;
});