我有一個似乎完全瘋狂的問題!我使用了一個指令,該指令將綁定到其作用域的某些屬性從父作用域變量中取值。所有非常正常.. ...除了當我做console.log(範圍)時,屬性正常顯示作爲範圍對象的屬性與期望值,但當我做console.log(scope.myAttr),然後我得到undefined !角度指令範圍確實/不通過鏈接功能
有沒有人遇到過這樣的事情?
// In parent directive:
scope.datepickerOptions.enableTime = false;
// In directive:
angular.module('myModule')
\t .directive('datepicker', function() {
\t \t return {
\t \t \t require: 'ngModel',
\t \t \t restrict : 'A',
\t \t \t scope: {
\t \t \t \t format: '@',
\t \t \t \t enableTime: '=',
\t \t \t \t minDate: '@',
\t \t \t \t maxDate: '@',
\t \t \t \t mode: '@'
\t \t \t },
\t \t \t link : function(scope, element, attrs, ngModel) {
\t \t \t \t console.log("scope")
\t \t \t \t console.log(scope)
\t \t \t \t // displays all properties with expected values
//=> scope.enableTime: false
\t \t \t \t console.log("enableTime")
\t \t \t \t console.log(scope.enableTime)
// undefined (!!!)
...
// In parent template:
...
<input
type="text"
id="events_date"
name="events_date"
ng-model="events.selectedDate"
placeholder="Select Date Range"
ng-change="setQueryDate()"
format="d M Y"
mode="range"
enable-time="datepickerOptions.enableTime"
max-date="today"
datepicker>
...
我也試過: 啓用時間= 「{{datepickerOptions.enableTime}}」 與enableTime: '@'
,我也得到同樣的瘋狂,當我做 console.log(attrs)和console.log(attrs.enableTime)
同樣的事情,當我把一個控制器與$ scope參數: console.log($ scope)display一切正常,但console.log($ scope.enableTime)給出了undefined
嘗試使用'attrs'。鏈接函數執行時,範圍屬性尚未設置。之後它會被設置。這就是爲什麼當你嘗試直接引用它時你會得到'undefined'。控制檯中的範圍對象顯示範圍的最終狀態。 – Hoyen
如果您確實需要使用'範圍'對象,請使用指令的控制器功能而不是鏈接功能。 – Hoyen
但不會attrs.enableTime具有「datepickerOptions.enableTime」作爲一個值?爲什麼項目中的其他指令正常工作?它是**限制:「A」**是否會發生這種行爲? –