小弟用Direcrive做了一个组件,在demo上测试运行过没问题。但是放在项目上使用后发现传值传不进去。
先附上异常问题代码
angular.module('index_area').directive('stores', function () {
return {
restrict: 'E',
replace: true,
scope: {
list:"="
},
templateUrl: 'Template/StoresSelect.html',
link: function (scope,elem,attr) {
console.log(scope.list)
}
}
})
参与区域
门店筛选
{{AddMusicCtrl.stores}}
为了找到问题的所在我专门测试了。发现它是有值得。
{{AddMusicCtrl.stores}}
但是到了。这里就显示undefined了。如果我
改成
我发现list可以将11传进去。请问下是为什么呢?怎么解决
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
单纯的从你代码来看的话,只要在组件加载的时候AddMusicCtrl.stores有值,directive是可以获取到的。
所以你console出undefined的原因可能是因为在directive加载的时候,AddMusicCtrl.stores并没有值。
你可以尝试着这么写一下:
或者在你的controller里面给AddMusicCtrl.stores一个默认值。
这里并非是“传不进去值”,而是在传值的时候AddMusicCtrl.stores这个变量还没有值。在controller中为AddMusicCtrl.stores设置一个默认值就可以解决这个问题,也可以在指令中监听一下list。当list变化时(也就是从没值变到有值得时候 ),就可以打印出来了
在指令的编译过程中,controller指令声明了变量而未给它赋值,编译stores指令的时候,所绑定的变量还没有赋值,因而打印出 undefined。
试下