Итак, что у вас происходит, так это то, что область действия вашей директивы отделяет вас от области действия вашего контроллера, и вам нужно добавить уровень объекта перед первичной и вторичной переменными.
var app = angular.module('myApp', [])
app.directive('awesomeDirective', function () {
return {
restrict: 'E',
transclude: true,
template: '<div class="awesome" ng-transclude></div>'
}
});
AwesomeController = function ($scope, $timeout) {
$scope.options = {};
updateAllowedSecondaryOptions = function () {
if ($scope.options.primary == 'primaryOption1') {
$scope.secondaryOptions = [
{value: 'foo', title: 'Foo'},
{value: 'bar', title: 'Bar'},
{value: 'baz', title: 'Baz'}]
} else if ($scope.options.primary == 'primaryOption2') {
$scope.secondaryOptions = [
{value: 'bar', title: 'Bar'},
{value: 'baz', title: 'Baz'}]
}
$scope.options.secondary = $scope.secondaryOptions[0]
}
$scope.options.primary = 'primaryOption2'
updateAllowedSecondaryOptions()
$scope.primarySelected = function (newValue) {
$scope.options.primary = newValue;
updateAllowedSecondaryOptions()
}
};
http://jsfiddle.net/G5PLL/
Вы можете узнать больше о том, что происходит, прочитав https://github.com/angular/angular.js/wiki/Understanding-Scopes, в котором рассказывается о том, что происходит, чтобы отделить вас от прототипного наследования.
P.S. Правило Миско «Всякий раз, когда у вас есть ng-модель, где-то там должна быть точка. Если у вас нет точки, вы делаете это неправильно».
person
Paul Ryan
schedule
31.05.2013
$scope.secondary = $scope.secondaryOptions[0]
он должен установить выбор на первую доступную опцию o_0 - person user1161657   schedule 31.05.2013