2015-10-26 7 views
0

Я новичок в angularjs. Все еще понимая детали и как это работает. Я в ситуации, когда я не могу найти это простое решение. Надеюсь, кто-то может помочь мне здесь.Не удается прочитать данные о свойствах неопределенных (Angularjs- не удается прочитать данные из шаблона в контроллер)

Я создал структуру папок

Select 
->SelectModule.js 
->SelectDirective.js 
->SelectController.js 
->SelectTemplate.html 

Вот содержимое внутри каждого файла.

SelectModule.js

angular.module('Select', []); 

SelectDirective.js

'use strict'; 
angular.module('Select').directive('Select', Select); 
function Select() { 
return { 
    transclude: false, 
    scope: { 

    }, 
    controller: 'SelectController', 
    templateUrl: 'app/directives/Select/SelectTemplate.html' 
}; 
}; 

SelectController.js

use strict' 
var SelectMod = angular.module('Select', []); 
SelectMod.controller('SelectController', function ($scope) { 

console.log($scope.details.data); 
}); 

SelectTemplate.html

<section ng-controller="SelectController"> 
<div><label>Data:</label><div><input type="number" ng-model= "details.data" ng-init="details.data=0.2" step="0.1" /></div></div> 
</section> 

Теперь в шаблоне я инициализировал details.data = 0.2. Если вы видите в контроллере, я пытаюсь получить на это инициализированы данных в Templete и вывод его в консоли с помощью этого заявления

console.log($scope.details.data); 

Проблема заключается в том, когда я запускаю код и проверьте консоль. он дает ошибку, заявляя, что «Невозможно прочитать данные свойства« неопределенного ». Как получить это значение в контроллере. если я получу эту вещь, я узнаю, как получить данные из шаблона и процесса в контроллере. Я застрял здесь. кто-то, пожалуйста, предложите или сообщите мне, где я ошибся.

ответ

1

Причина заключается в том, что контроллер должен работать, прежде чем он сможет отобразить представление, а не наоборот.

Таким образом, в то время вы пытаетесь войти данные не существует

Не используйте ng-init для этой цели. Документация для ng-init также рекомендует не использовать ее таким образом.

Инициализировать переменные в контроллере.

+0

@ charlietfl- даже если я инициализирую переменные в контроллере, он обеспечивает такую ​​же ошибку. Напр. Я инициализировал его в контроллере с помощью $ scope.details.data = 2; а затем попытался утешить. он не работал. – Ayesha

+1

вы не можете создать объект таким образом ... '$ scope.details = {data: 2}'. Если нет объектов 'details', вы не можете ссылаться на его свойство. Угловой позволяет это в представлении, но он должен по существу делать то же самое. Это стандартный javascript – charlietfl

+0

@ charlietfl- действительно, это был ват, я делал неправильно. Благодарю вас за то, что я пролил свет. – Ayesha

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