2015-07-01 36 views
1

HTML初始化NG-模型不能在JS,而不是HTML

var myApp = angular.module('myApp', []); 
myApp.controller('AppCtrl', function ($scope, $http) { 
var refresh = function() { 
    $scope.item.check = false; 
    $scope.item.name = ""; 

} 
//Call upon loading app to initialize values, also called upon events to refresh the field 
refresh(); 

我最初以爲只是JS足以初始化值,所以我擺脫了複選框和表單的ng-init最終得到錯誤:

TypeError: Cannot set property 'name' of undefined 

該應用程序的作品,如果我只是離開這兩個ng -在裏面。當我從兩個元素中的一箇中刪除ng-init時(也就是從複選框或表單中刪除),但它同樣適用,但如果我同時刪除了這兩個元素,它將不起作用。這裏發生了什麼?我是否正確執行此操作,還是有更好的方法來初始化?

謝謝。

回答

1

您可以在控制器的第一行添加$scope.item = {}

當您嘗試訪問時,Javascript報告錯誤$scope.item.name$scope.item本身不存在(或在某些情況下不是對象)。

當你做ng-init,角爲你創建對象,所以你不會得到錯誤。

+0

我明白了!說我們將項目初始化爲對象或字典是否正確? –

+0

對象。 javascript沒有字典類型AFAIK,我們只是用object來實現一個。 – Icycool

1

一下添加到控制器

$scope.item = {};