2015-11-25 24 views
2

我想要觀看視頻上傳框中的一些值,我已經有了正常的輸入工作,但是當涉及到我自定義的選擇框時,事情會變得有點棘手,因爲他們沒有爲他們設置ng-model如何從指令中查看綁定到另一個控制器的值?

編輯:這可能是一些孤立的範圍問題或類似的東西?似乎很奇怪,因爲我可以看到我從控制器獲取所有信息,但手錶不想看到這些值。

在我coForms控制器我已經做到了這一點,爲選擇設置「值」:

coForms.selectOption = function(option) { 
    coForms.currentOption = option; 
}; 

而在我的指導我做這樣看的價值觀:

video.directive('videoUpload', [function() { 

    return { 
     scope: { 
      video: '=' 
     }, 
     controller: 'CoFormsCtrl', 
     controllerAs: 'co', 
     templateUrl: 'app/views/components/video/video-upload.html', 
     link: function(scope, element, attrs) { 

      scope.$watch('video.title', function(newVal, oldVal) { 
       scope.video.formData.title = newVal; 
      }); 

      scope.$watch('video.description', function(newVal, oldVal) { 
       scope.video.formData.description = newVal; 
      }); 

      scope.$watchCollection('video.tags.filteredTags', function(newVal, oldVal) { 
       scope.video.formData.tags = newVal; 
      }); 

      // How do I make this one work? 
      scope.$watch('scope.co.currentOption', function(newVal, oldVal) { 

      }); 
     } 
    }; 
}]); 

我如何看我定製的選擇框的價值?值存在於scope.co.currentOption,但我不明白如何在我的指令中看到這個值,一旦我聲明它與controllercontrollerAs。有任何想法嗎?

+0

嘗試'作用域。$ watch('co.currentOption',...' – yarons

+0

我做了,但它不起作用,我只能通過範圍訪問'co',但它仍然不想看價值 – Chrillewoodz

回答

0

試試這個:

video.directive('videoUpload', [function() {  
    return { 
     scope: { 
      video: '=' 
     }, 
     controller: 'CoFormsCtrl', 
     controllerAs: 'co', 
     templateUrl: 'app/views/components/video/video-upload.html', 
     link: function(scope, element, attrs, ctrl) { 

      // How do I make this one work? 
      scope.$watch(function() { 
       return ctrl.currentOption; 
      }, function(newVal, oldVal) { 
       // ... 
      }); 
     } 
    }; 
}]); 
+0

都能跟得上沒有工作:( – Chrillewoodz

+0

你可以創建一個jsbin /小提琴 – Lee

0

試試這個:在HTML <div video-upload ctrl="coForms"></div>和指令 應該

video.directive('videoUpload', [function() { 

    return { 
     templateUrl: 'app/views/components/video/video-upload.html', 
     link: function(scope, element, attrs) { 

      scope.ctrl = scope.$eval(attrs.ctrl); 
      scope.video = scope.$eval(attrs.video); 
      // How do I make this one work? 
      scope.$watch('ctrl.currentOption', function(newVal, oldVal) { 
// It will work 
      }); 
     } 
    }; 
}]); 
+0

我不明白這是怎麼必要的,但它不工作,要麼這樣:|? – Chrillewoodz

+0

ü可以用

vpsingh016

+0

同樣的結果不幸的是嘗試 – Chrillewoodz

0

,如果你不能夠趕上範圍級別,分配了到$ rootScope.currentOption 。 我不確定,但如果您從其他控制器觀看模型/ var並嘗試訪問指令,則存在問題。

希望這個幫助!

+0

我不想混亂rootScope,除非它是最後一個選項可用於我。仍然沒有得到這個工作,所以我必須進行調查。 – Chrillewoodz

相關問題