2016-09-27 39 views
0

今天我有一個問題,我需要添加一個值與輸入與ng-model =「元素」的作品,但如果我使用ng-model =「model.element 「不再爲我工作,這裏的代碼ng-model =「model.element」不工作

<div ng-app="myApp" ng-controller="myCtrl as model"> 
<input type="text" ng-cero="uno" ng-model="c1ero"> 
<input type="text" ng-cero="dos" ng-model="model.eae" > 
</div> 

angular 
.module("myApp",[]) 
.controller('myCtrl', function($scope){ 
var model=this; 
}) 
.directive ('ngCero', function(){ 
    var linkFunction =function(scope, element, attrs){ 
    element.bind("keypress", function(event) { 
     if(event.which === 13) { 
      scope.$apply(function(){ 
      scope.$eval(attrs.ngCero, {'event': event}); 
      scope[attrs.ngModel]="0,"; 
      console.log(attrs); 
      }); 
      event.preventDefault(); 
     } 
    }); 
    }; 
    return{ 
    controller: "myCtrl", 
    link: linkFunction 
    } 
}) 

這裏的codepen:http://codepen.io/fernandooj/pen/EgmQmJ

+0

不認爲你知道,添加控制器指令創建新實例,所以你必須myCtrl'的'3個實例,以及它們各自有自己的範圍。另外一個非常糟糕的做法是用'ng-'前綴你的指令......這意味着它們是角核心的一部分。更好地創建自己的前綴,以便稍後在需要維護時知道它是您自己的自定義指令 – charlietfl

+0

@charlietfl嗨,感謝您的回答,但我不明白如何解決錯誤與您的評論,它將是可能,你給我一個關於代碼的幫助 –

回答

1

你需要解析scope[attrs.ngModel]="0,";時ngModel點像model.eae嵌套屬性。使用角度$解析服務用於此目的($parse(attrs.ngModel).assign(scope, '0, ');):

.directive ('ngCero', function($parse) { 
    var linkFunction =function(scope, element, attrs) { 
    element.bind("keypress", function(event) { 
    if (event.which === 13) { 
     scope.$apply(function(){ 
     scope.$eval(attrs.ngCero, {'event': event}); 
     $parse(attrs.ngModel).assign(scope, '0, '); 
     console.log(attrs); 
     }); 
     event.preventDefault(); 
    } 
}); 
}; 
return { 
    controller: "myCtrl", 
    link: linkFunction 
} 
})