ループ内には、次のものがあります。
<div class="barcode" class="thumbnail">
<canvas class="ean" barcode-generator barcode-value="9002236311036"> </canvas>
</div>
これは、大量のバーコードをループアウトします。バーコード値を静的に追加しましたが、意図はこれを {{barcodeNumber}} 経由で追加することです
数値をバーコードに変換する本当に素晴らしいプラグインhttps://github.com/joushx/jQuery.EAN13を見つけました。
さまざまなチュートリアルに従って、次のディレクティブを作成しました (ただし、方法や理由はまだよくわかりません)。また、Angular の上に jquery を含め、Angular の後にプラグインを含めました。
app.directive('barcodeGenerator', function () {
return {
restrict: 'A',
scope: {
barcodeValue: '='
},
link: function (scope, elem, attrs) {
console.log("Recognized the barcode directive usage");
$('.ean').EAN13(scope.barcodeValue);
}
}
});
console.log は機能しますが、プラグインを呼び出す部分は機能しません... Chrome デバッグで次のエラーが表示されます。
TypeError: オブジェクト 9002236311036 にはメソッド 'split' がありません
何が間違っているのかわかりません。フォーラムの投稿をたくさん読みましたが、理解できません。
ありがとう、ロブ
編集-以下のFranciscoの投稿に続いて- toString() を追加すると機能しました。唯一のことは、なぜ/どのようにこれが機能しているのかわかりません。
app.directive('barcodeGenerator', function () {
return {
restrict: 'A',
scope: {
barcodeValue: '='
},
link: function (scope, elem, attrs) {
console.log("Recognized the barcode directive usage");
$('.ean').EAN13(scope.barcodeValue.toString());
}
}
});
だから私は少しリファクタリングをしました:
app.directive('ean', function () {
return {
restrict: 'C',
scope: {
barcodeValue: '='
},
link: function (scope, elem) {
console.log("Recognized the barcode directive usage");
$(elem).EAN13(scope.barcodeValue.toString());
}
}
});
- HTMLをクリーンアップしたかったので、クラスを使用しました(Cを制限しますか?)-スコープ内にバーコード値を設定します。
次に、html に以下を追加しました。
<div class="barcode" class="thumbnail">
<canvas class="ean" barcode-value="{{barcode}}"> </canvas>
</div>
そして、これがエラーの場所です...バーコード値。ハードワイヤードで機能する前に...今、ループに入れようとしましたが、そうではありません。
編集...
<div class="barcode" class="thumbnail">
<canvas class="ean" barcode-value="barcode"> </canvas>
</div>
中括弧の削除は機能しました....うーん...マニュアルを入手する必要があります...