2016-04-09 2 views
-2

не могли бы вы помочь. Я нашел этот пример в Fiddle. http://jsfiddle.net/terebentina/9mFpp/Невозможно изменить переменную в Angular js, почему?

Мой вопрос, почему в угловых (в данном примере)

$scope.widget = {title: 'abc'}; // works very well and ... 
$scope.widget.title = 'abc'; // doesn't work 

Это свойство объекта в JavaScript (widget.title). Я всегда думал - мы можем установить его в любое время? где я ошибаюсь?

+0

вы создать виджет первый? – uzaif

+0

http://jsfiddle.net/9mFpp/1523/ – uzaif

ответ

0

Причина, почему второй не работает, потому что вы должны сначала инициализировать объект:

// initialize the object first 
$scope.widget = {}; 

// and now you can set the title 
$scope.widget.title = 'abc'; 

, но это делает вас тип 2 строки кода. Это немного короче, чтобы сделать эти 2 вещи прямо:

// Initialize the widget object and set its title property 
$scope.widget = {title: 'abc'}; 
3

$scope является объектом, но $scope.widget не определено, пока не будет установлено. Вы можете инициализировать его как объект, а затем установить свойство, например:

$scope.widget = {}; 
$scope.widget.title = 'abc'; 

Или вы можете сделать, как скрипка делает и инициализируете его в то время как инициализацию свойства одновременно:

$scope.widget = {title: 'abc'}; 
+0

Я действительно надеюсь, что все больше и больше людей проведут время, изучая JavaScript больше. Слишком много людей слишком мало знают об этом, но вместе с ним ... Ницца. – tom10271

0

не работает, потому что объект виджета не определен (не существует)

Следующий код создает объект (содержащий поле «название» со значением «abc») и присваивает его переменной «$ scope.widget» :

$scope.widget = {title: 'abc'}; 

Следующий код присваивает «ABC» в «название», поданном от 'виджета объекта:

$scope.widget.title = 'abc'; 

так, чтобы работать переменную виджета должен быть определен

Смежные вопросы