指令的交互与ajax异步出现的问题

我们知道如果不给指令设置scope得话我们的指令的scope是跟父scope一致的

这个有一个好处

就是如果我们要把一个模型作为指令的属性的参数传递给质量是ok的,所以我们编写公用的指令,不知道父指令用有什么属性的时候就不设置就好了


但是,如果我们父指令中的某个模型是在ajax异步请求以后才完成的,那么因为我们的指令已经渲染成功了,如果我们的这个传入的属性是决定指令渲染的,那么我们的指令的渲染就不会再次改变,导致失效


. directive( 'star', function () {
// 星级评分指令
return {
template: "<i class= \" icon ion-ios-star \" ng-repeat= \" star in stars \" ></i>",
// scope:{"="},
link: function ( $scope, element, attrs) {
// 设置star的次数
console. log( $scope);
$scope. stars = [];
console. log( attrs. stars);
while ( attrs. stars) {
$scope. stars. push({});
attrs. stars--;
}
}
}
})

现在有一个星级评分的指令

如果我们是使用

他的父scope是这样的

unction ( $scope, $http, $ionicLoading) {
$scope. weatherInfo = {};
$ionicLoading. show();
$http. get( 'http://localhost:8100/views/weather/weather.json'). success( function ( data) {
$scope. weatherInfo = data;
$ionicLoading. hide();
}). error( function () {
console. log( "error");
$ionicLoading. hide();
});


如果我们是用

< star stars= "{{weatherInfo.recommendationRate}}" ></ star >

因为指令的渲染先于ajax

所以最后的时候我们的指令接受到的stars是空的

也就渲染不出来

但是如果是

< star stars= "{{weatherInfo.recommendationRate}}" ng-if= "weatherInfo.recommendationRate" ></ star >

那么得话

一开始的时候因为是空,所以不渲染,等到ajax结束以后,属性不是空了

就渲染了

因此,问题得到解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值