2014-03-30 65 views
0

我用一個很簡單的角度指令納入selectize:角+ Selectize獲得形式價值創造

https://github.com/paolodm/angular-selectize/blob/master/angular-selectize.js

app.directive('selectize', function($timeout) { 
    return { 
     link: function($scope, element, attrs) { 
      $timeout(function() { 
       $(element).selectize($scope.$eval(attrs.selectize)) 
      }) 
     } 
    }; 
}); 

我的整個形狀看起來像:

<form> 
    <input id="title" type="text" ng-model="post.title" /> 

    <select placeholder="Tags" 
     ng-options='tag.name for tag in tags' 
     ng-model='post.tags' 
     selectize="{ maxItems: 3 }" 
     multiple></select> 

    <button ng-click="create(post)">create</button> 
</form> 

Selectize連接正確。

但是,在我的創建函數中,我得到post.title但就是這樣。

$scope.tags = [{ 
    id: 1, 
    name: 'Tag1' 
}, { 
    id: 2, 
    name: 'Tag2' 
}]; 

$scope.create = function(post) { 

    console.log('post: ', post); 

}; 

// logs {title: 'input value'} 

如果我刪除selectize()通話所以這是一個普通的HTML元素,並留下ng-model="post.tags"它的作品,我也得到了標籤期望值。

在沒有選擇性指令的情況下,我可以在控制檯中運行$('select').val(),例如正確返回[ "1", "2" ],這是標籤的ID,這正是我想要的。他們只是不會被髮送到create與selectize。

這是怎麼回事?

回答

0

我是新來的角/ selectize自己,但我認爲,如果你的選擇是硬編碼的指令只會工作,e.g:

<select ...> 
    <option value="1">Option1</option> 
    ... 
    <option value="n">OptionN</option> 
</select> 

否則,Selectize可能是實例化之前ng-options創建它們。因此,我使用here is the directive