2016-06-10 108 views
1

我有一個在控制器中定義的數組,並使用雙向綁定將它傳遞給指令。在指令中,我試圖將對象推入該數組,但失敗了。Angularjs 2向數據綁定從指令到控制器陣列的推對象

.controller("test", function($scope){ 
     $scope.myarr =[]; 

     $scope.$watch("myarr", function(newValue, oldValue){ 
     console.log($scope.myarr); //prints empty arr 
    },true); 
}); 

.directive('ptest', ['$compile', function($compile) { 
    var object = {value: 'changed value'}; 
    return { 
     restrict:"E" 
     scope: { 
      myarr:"=" 
     }, 
     template : "<div>{{iobj.value}}<div>", 
     link: function(scope,elem,attr){ 
     myarr.push(object) ; 
     } 
    }; 
}]); 

html 

<ptest myarr="myarr"></ptest> 

回答

1

嘗試的scope.myarr.push(object);代替myarr.push(object)

+0

Plunker附:https://plnkr.co/edit/IhPxOnH3bBUBKojKMs98?p=preview注意:不要忘了後面的逗號'限制:「E」' –

1

爲@George李先生說嘗試scope.myarr.push(object);,也是你的指令有誤。 restrict:"E"後,你忘了把,

return { 
    restrict:"E", // forgot put ',' 
    scope: { 
     myarr:"=" 
    }, 
    template : "<div>{{iobj.value}}<div>", 

// Code goes here 
 

 
angular.module('app', []) 
 

 
.controller("test", function($scope){ 
 
    $scope.myarr =[]; 
 

 
    
 
    $scope.$watch("myarr", function(newValue, oldValue){ 
 
    console.log($scope.myarr); //prints empty arr 
 
    },true); 
 
    
 
    $scope.addItem = function(){ 
 
     var object = {value: 'changed value2'}; 
 
     $scope.myarr.push(object); 
 
    } 
 
}) 
 

 
.directive('ptest', ['$compile', function($compile) { 
 
    var object = {value: 'changed value'}; 
 
    return { 
 
    restrict:"E", 
 
    scope: { 
 
     myarr:"=" 
 
    }, 
 
    template : '<div ng-repeat="item in myarr">{{item.value}}<div>', 
 
    link: function(scope,elem,attr){ 
 
     scope.myarr.push(object) ; 
 
    } 
 
    }; 
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="test"> 
 
    <ptest myarr="myarr"></ptest> 
 
    <input type="button" ng-click="addItem()" value="add"> 
 
    </div>

+0

如果你能弄清楚如何讓模板輸出'value changed'從新添加的'value'對象,我會+1。 –

+1

@RaphaelRafatpanah查看更新的答案。 –

相關問題