无法读取未定义的属性“数据”(Angularjs-无法从模板读取数据到控制器)

时间:2015-10-26 16:44:18

标签: javascript angularjs scope controller

我是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。如果您在控制器中看到,我正在尝试在模板中获取此初始化数据并通过此语句在控制台中输出

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

问题是当我运行代码并检查控制台时。它给出了错误说明 “无法读取未定义的属性'数据'”。如何将此值输入控制器。如果我得到这个东西,我将会知道如何从控制器中的模板和进程获取数据。我被困在这里。有人请建议或让我知道我哪里出错了。

1 个答案:

答案 0 :(得分:1)

原因是控制器必须先运行才能渲染视图,而不是相反。

因此,当您尝试记录数据时,它并不存在

请勿使用ng-init来实现此目的。 ng-init的文档也建议不要这样使用它。

初始化控制器中的变量。