2013-10-29 61 views
2

我正在嘗試獲取自定義輸入文本。這是我的看法如何通過引用傳遞ng模型?

<div> 
    <span>{{label}}</span> 
    <input type="text" class="{{class}}" placeholder="{{placeholder}}" ng-style="width?{width: width + 'px'}:{}" ng-model="model"/> 
</div> 

,這是我的控制器

angular.module('inputText', []) 
     .directive('inputText', function() { 
      return { 
       restrict: 'E', 
       replace: true, 
       scope: { 
        width: '@', 
        label: '@', 
        class: '@', 
        placeholder: '@', 
        model: '@' 
       }, 
       controller: 'InputCtrl', 
       templateUrl: 'inputText.html' 
      }; 
     }) 
     .controller('InputCtrl', ['$scope', function($scope) { 

     }]); 

的問題是,我一直都想與somothing類似如下錯誤信息:

Error: [$parse:syntax] Syntax Error: Token 'model' is unexpected, expecting [:] at column 3 of the expression [{{model}}] starting at [model}}]. 

我的問題是:我應該如何通過參考來傳遞模型,以獲得類似的內容:

<input-text label="When?" class="" placeholder="" icon="awesome-icon" width="150" model="{{when}}"></input-text> 
+1

第一件事:刪除ng模型中的{{}}(https://github.com/angular/angular.js/wiki/Understanding-Scopes) –

+1

@EduardGamonal我剛剛注意到它,我沒有成功。我沒有錯誤,但指令中的模型未綁定到父項 –

回答

2

定義模型作爲scope: { model: "=" }=裝置2路結合)和使用:

<input ... ng-model="model" /> 
在模板

請記住不要使用第一級屬性:即,做這樣的事情:

<input-text ... model="form.when"></input-text> 

而且這樣的:

<input-text ... model="when"></input-text> 

在所有情況下的{{when}}是錯誤的,它不會被綁定2路。

+1

謝謝。我嘗試過使用「&」,「@」和「=」,最後問題是在父wiew中定義ng模型。我曾經使用model =「when」而不是model =「form.when」這個對象表示法有所不同 –