3 回答
TA贡献1780条经验 获得超5个赞
单纯的从你代码来看的话,只要在组件加载的时候AddMusicCtrl.stores有值,directive是可以获取到的。
所以你console出undefined的原因可能是因为在directive加载的时候,AddMusicCtrl.stores并没有值。
你可以尝试着这么写一下:
<stores list="AddMusicCtrl.stores" data-ng-if="AddMusicCtrl.stores"></stores>
或者在你的controller里面给AddMusicCtrl.stores一个默认值。
TA贡献1788条经验 获得超4个赞
这里并非是“传不进去值”,而是在传值的时候AddMusicCtrl.stores这个变量还没有值。在controller中为AddMusicCtrl.stores设置一个默认值就可以解决这个问题,也可以在指令中监听一下list。当list变化时(也就是从没值变到有值得时候 ),就可以打印出来了
link: function (scope,elem,attr) { scope.$watch('list',function(newVlaue){ console.log(scope.list) }) }
在指令的编译过程中,controller指令声明了变量而未给它赋值,编译stores指令的时候,所绑定的变量还没有赋值,因而打印出 undefined。
TA贡献1811条经验 获得超5个赞
angular.module('index_area').directive('stores', function () {
return {
restrict: 'E',
replace: true,
scope: true,
templateUrl: 'Template/StoresSelect.html',
link: function (scope,elem,attr) {
//var value= scope.AddMusicCtrl.stores
console.log(scope.AddMusicCtrl.stores)
}
}
})
<div class="form-lyout">
<div class="form-title">参与区域</div>
<div class="form-layout">
<div class="radio">
<label>
<input type="radio" name="exclusives" value="true" ng-model='AddMusicCtrl.music.exclusive' checked>
全部门店
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="exclusives" value="true" ng-model='AddMusicCtrl.music.exclusive' checked>
部分门店
</label>
</div>
</div>
</div>
<div class="form-lyout">
<div class="form-title">门店筛选</div>
<div class="form-layout">
{{AddMusicCtrl.stores}}
<store></stores>
</div>
</div>
- 3 回答
- 0 关注
- 650 浏览
添加回答
举报