3
component documentationとthis exampleで説明されているように、角度コンポーネントの境界プロパティを実装しようとしています。角度コンポーネントのboundプロパティの値を設定できません
残念ながら、タグレベルまたは$onInit
メソッドで割り当てられている値は使用されません。それをモデル値として使用したときにも値は印刷されません。
full code on plunkerがあります。
マイバインディング定義:
(function(angular) {
'use strict';
function SearchResultController($scope, $element, $attrs) {
var ctrl = this;
ctrl.searchFor = 'nohting-ctor';
ctrl.$onInit = function() {
console.log('SearchResultController.$onInit: searchFor='+ctrl.searchFor);
ctrl.searchFor = 'nothing-int';
};
}
angular.module('myApp').component('searchResult', {
templateUrl: 'searchResult.html',
controller: SearchResultController,
bindings: {
searchFor: '<'
}
});
})(window.angular);
テンプレート:
<p>SearchResult for <span ng-model="$ctrl.searchFor"</span></span></p>
それが使われている方法:nothing-*
値の
<h1>Main Window</h1>
<search-input on-start-search="$ctrl.startSearch(value)"></search-input>
<search-result search-for="nothing-ext"></search-result>
どれも示さエバースではありません。
何か問題がありますか?
ありがとう。私の日を救った!バウンドプロパティの値に入る必要がある構文についての説明はありますか? – BetaRide
私は確かにドキュメントでこれについて何かを見つけることができます。しかし、私はそれを簡単な言葉で説明することができます。つまり、3種類のバインディングと、属性値として書き込むことのできる2種類のバインディングがあります。バインディング: '='双方向バインディング - 受け入れと表現。値は通常のJSコードと同じに見えるはずです。そのため、{{}}を '= '式として書くことはできません。なぜなら、それは有効なJSではないからです。 '{{someExpression}} 'の構文解析と評価の後、' 'test' '@'' - valueは文字列でなければなりません: '' test = "'quoted string' ''または '' test { '' 'some string' "'と同じ文字列に展開されます。 – dfsq
'test: '&''値バインディングは、(関数であるかのように)呼び出すことも、基本的に 'eval'に渡すこともできます。ですから、 '='(または '<')を扱うときには、有効なJS式に属性の値が必要です。有効な式の例(JSなど): 'someObj'、' some string''、 'someObj.prop'。無効な式の例: '{{something}}'、 'some/path.html'(ngIncludeでは静的な文字列の場合はパスを引用する必要があります) – dfsq