2016-10-09 38 views
-1

當我加載頁面以添加新產品時,模型mv.product最初是未定義的,並且僅在我開始修改ng-model指令值時才創建。最初在「新」表單上未定義的ng-model

控制器:

function myController() { 
    var vm = this; 

    vm.saveProduct(product) { 
     // save product who's properties were defined 
     // by the view's two way databindings 

    } 

} 

查看:

<input ng-model="vm.product.someProperty"> 
<button ng-click="vm.saveProduct(vm.product)"> 

爲什麼不能在我的控制器定義模型的藍圖?如:

vm.product ={ /* properties and their initial values */} 

而不是通過視圖的數據綁定來設計模型。

+0

爲什麼不定義它呢?這是實現它的正確方法。如果你希望通過HTML – nikjohn

+0

來完成,你通常可以通過'ng-init'來完成,你通常沒有大多數用戶輸入的默認值.....那麼爲什麼要去做所有額外的工作呢? – charlietfl

+0

@nikjohn這不是ng-init的用途......閱讀文檔。並說你通常會定義所有的屬性是不需要的,除非應用程序本身需要默認值。 – charlietfl

回答

0

爲了初始化ng-model值,有兩條路走:

  • 在控制器初始化值,就像你在你的HTML提到
  • 使用ng-init<input ng-model="smthn" ng-init="">

理想,根據Angular JS的最佳實踐,您不應該在您的視圖中創建模型。應該在控制器中創建模型,然後綁定到視圖中。所以前提是有點關閉。這是您初始化控制器中的作用域變量的原因之一。

相關問題