2015-09-11 6 views
6

kann ich nicht ganz verstehen, warum die folgende nicht funktioniert:Angular kann nicht eingestellt Eigenschaft undefined

main.html

<div class="MainCtrl"> 
    <h1>{{message.test}}</h1> 
</div> 

main.js

angular.module('myApp') 
    .controller('MainCtrl', function(someService, $location, $scope) { 

    $scope.message.test = "blablabla"; 

    } 
}); 

Als ich führe den Code aus Ich kann einen Fehler, der besagt:

TypeError: Cannot set property 'test' of undefined at new (http://localhost:9000/scripts/controllers/main.js:13:25) at invoke (http://localhost:9000/bower_components/angular/angular.js:4473:17) at Object.instantiate (http://localhost:9000/bower_components/angular/angular.js:4481:27) at http://localhost:9000/bower_components/angular/angular.js:9108:28 at $route.link (http://localhost:9000/bower_components/angular-route/angular-route.js:977:26) at invokeLinkFn (http://localhost:9000/bower_components/angular/angular.js:8746:9) at nodeLinkFn (http://localhost:9000/bower_components/angular/angular.js:8246:11) at compositeLinkFn (http://localhost:9000/bower_components/angular/angular.js:7637:13) at publicLinkFn (http://localhost:9000/bower_components/angular/angular.js:7512:30) at name.$get.boundTranscludeFn (http://localhost:9000/bower_components/angular/angular.js:7656:16)

Offensichtlich vermisse ich etwas super offensichtlich.

Antwort

25

Sie definieren eine Eigenschaft zu einem undefined Objekt, Sie müssen Ihr Objekt vor der Einstellung Eigenschaften initialisiert haben.

$scope.message = {}; 
$scope.message.test = 'bla'; 
3

Ihr Test nicht in einer Nachricht vorhanden ist, müssen Sie $scope.message = {}; vor tun, $scope.message.test = "blablabla";

3

message in Ihrem Code ist kein Objekt, müssen Sie es machen:

$scope.message = { test: 'blablabla' }; 
4

Sie sollte Ihr $scope.message Objekt initialisieren, aber tun Sie es sicher (nur für den Fall, dass es irgendwo anders definiert ist, vielleicht in einigen Umständen):

$scope.message = $scope.message || {}; 
$scope.message.test = "blablabla"; 
Verwandte Themen