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 關注
- 683 瀏覽
添加回答
舉報