我正在尝试在视频上传框中观看一些值,我已经正常输入正常工作但是当涉及到我定制的选择框时,事情变得有点棘手,因为它们没有{{1为他们设置。
编辑:这可能是一些孤立的范围问题还是类似的问题?看起来很奇怪,因为我可以看到我从控制器获得所有信息,但手表不想看值。
在我的ng-model
控制器中,我这样做是为了为select设置一个“值”:
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
和controller
声明后,我不明白如何在我的指令中查看此值。有什么想法吗?
答案 0 :(得分: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) {
// ...
});
}
};
}]);
答案 1 :(得分: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
});
}
};
}]);
答案 2 :(得分:0)
如果您无法捕获范围级别,请将其分配给$ rootScope.currentOption。 我不确定但是如果你从其他控制器观察model / var并试图在指令中访问它会有问题。
希望这个帮助!!