2016-07-22 23 views
2

我試圖把一些信息到一個數組中,並與NG-重複顯示,但由於某種原因,它不工作角JS - 不能推到一個數組

這是我的控制器:

(function() { 
'use strict'; 

angular 
    .module('app.article') 
    .controller('Article', Article); 

function Article($location) { 

    var vm = this; 

    vm.comments = []; 
    vm.addComment = addComment; 

    function addComment() { 
     vm.comments.push(vm.newComment); 
     vm.newComment = {}; 
    } 


} 

})(); 

這裏的plunkr:https://plnkr.co/edit/jPOJDXoG1vgNfsDzyJAD?p=preview

感謝您的幫助

+0

你真的應該包括*所有*問題主體中的相關代碼。特別是HTML。在你關聯的當前重定位器中,JavaScript使用'controller as'語法,並且以這種方式聲明瞭你的'ng-controller','ng-controller ='Article as vm「',但數據綁定項目使用' $ scope'語法(即,它們根本不涉及'vm')。 – Claies

回答

2

你的控制器,你使用的是控制器的語法,所以你將不得不參考範圍變量的Wi th前綴vm

<div ng-controller="Article as vm"> 
    <form ng-submit="vm.addComment()"> 
     <textarea placeholder="Sign in to share your thoughts." ng-model="vm.newComment.comment"></textarea> 
     <input type="text" class="form-control" ng-model="vm.newComment.user"> 
     <input type="submit" class="btn btn-primary" value="Post"> 
    </form> 

    <ul> 
     <li ng-repeat="comment in vm.comments">{{comment.user}} - {{comment.comment}}</li> 
    </ul> 
</div> 

而且在你的控制器,你必須初始化newComment對象

function Article($location) { 

    var vm = this; 

    vm.comments = []; 
    vm.addComment = addComment; 
    vm.newComment = {user: '', comment: ''} 
    function addComment() { 
     vm.comments.push(vm.newComment); 
     vm.newComment = {}; 
    } 


} 

Updated Plunker

+0

感謝@eltonKamami,你是對的,我錯過了控制器的語法 –

0
<div ng-controller="Article as vm"> 
     <form ng-submit="vm.addComment()"> 
      <textarea placeholder="Sign in to share your thoughts." ng-model="vm.newComment.comment"></textarea> 
      <input type="text" class="form-control" ng-model="vm.newComment.user"> 
      <input type="submit" class="btn btn-primary" value="Post"> 
     </form> 

     <ul> 
      <li ng-repeat="comment in vm.comments">{{comment.user}} - {{comment.comment}}</li> 
     </ul> 
    </div> 

這裏是更新plunkr https://plnkr.co/edit/HK4WIYCF6poMXncBU9Uk?p=preview