Knockout学習の組合せ監視属性
8200 ワード
コンビネーションモニタリング属性
名前の通り、複数のプロパティを1つのプロパティにマージできます.これにより、表示時に全体が表示され、いずれかの属性が変更され、この属性も変更されてビューが更新されます.これらはcomputed関数を使用するだけで実現できます.たとえば、firstNameとlastNameをfullName属性に結合し、次のコードを提示します.
ここではcomputedに関数を渡し、firstNameとlastNameからなる完全な名前だけを返すことで、2つのプロパティを簡単に組み合わせることができます.ここでcomputedの2番目のパラメータはthisであり、主に1番目のパラメータを指定するための環境コンテキストである.
表示にのみ使用できますが、この組み合わせのプロパティを変更する場合は、次のように書く必要があります.
computedに渡されるパラメータをオブジェクトに変更し、read、write、ownerプロパティと書きます.readはこの組合せプロパティを読み取るために使用され、writeは値を割り当てるために使用されるので、関数にはvalueパラメータがあり、最後のownerはcomputedの2番目のパラメータと同じで、主にreadとwrite関数が実行するコンテキスト環境を指定するために使用されます.読者はこのとき、テキストの値を勝手に修正することができ、前の値も変動していることに気づきます.これらはkoが私たちに与えた速さです.
もちろん、組合せ属性も必ずしも複数の属性の組合せである必要はないが、複数の属性をパラメータとしてajaxを介してサービス側に渡し、jqueryの$などの属性値を取得して表示することもできる.getJSONメソッド.
名前の通り、複数のプロパティを1つのプロパティにマージできます.これにより、表示時に全体が表示され、いずれかの属性が変更され、この属性も変更されてビューが更新されます.これらはcomputed関数を使用するだけで実現できます.たとえば、firstNameとlastNameをfullName属性に結合し、次のコードを提示します.
1 <span data-bind="text: fullName" />
2
3 <script type="text/javascript">
4 function AppViewModel() {
5 this.firstName = ko.observable("Bob");
6 this.lastName = ko.observable("Smith");
7 this.fullName = ko.computed(function () {
8 return this.firstName() + " " + this.lastName();
9 }, this);
10 };
11
12 ko.applyBindings(new AppViewModel());
13 </script>
ここではcomputedに関数を渡し、firstNameとlastNameからなる完全な名前だけを返すことで、2つのプロパティを簡単に組み合わせることができます.ここでcomputedの2番目のパラメータはthisであり、主に1番目のパラメータを指定するための環境コンテキストである.
表示にのみ使用できますが、この組み合わせのプロパティを変更する場合は、次のように書く必要があります.
1 <span data-bind="text: firstName"></span>
2 <span data-bind="text: lastName"></span>
3 <input type="text" data-bind="value: fullName" />
4
5 <script type="text/javascript">
6 function AppViewModel() {
7 this.firstName = ko.observable("Bob");
8 this.lastName = ko.observable("Smith");
9 this.fullName = ko.computed({
10 read: function () {
11 return this.firstName() + " " + this.lastName();
12 },
13 write: function (value) {
14 var lastSpecPos = value.lastIndexOf(" ");
15 if (lastSpecPos > 0) {
16 this.firstName(value.substring(0, lastSpecPos));
17 this.lastName(value.substring(lastSpecPos + 1));
18 }
19 },
20 owner: this
21 });
22 };
23
24 ko.applyBindings(new AppViewModel());
25 </script>
computedに渡されるパラメータをオブジェクトに変更し、read、write、ownerプロパティと書きます.readはこの組合せプロパティを読み取るために使用され、writeは値を割り当てるために使用されるので、関数にはvalueパラメータがあり、最後のownerはcomputedの2番目のパラメータと同じで、主にreadとwrite関数が実行するコンテキスト環境を指定するために使用されます.読者はこのとき、テキストの値を勝手に修正することができ、前の値も変動していることに気づきます.これらはkoが私たちに与えた速さです.
1 <span data-bind="text: firstName"></span>
2 <span data-bind="text: lastName"></span>
3 <input type="text" data-bind="value: fullName" />
4 <span data-bind="visible:isEdit"> </span>
5
6 <script type="text/javascript">
7 function AppViewModel() {
8 this.firstName = ko.observable("Bob");
9 this.lastName = ko.observable("Smith");
10 this.isEdit = ko.observable(false);
11 this.fullName = ko.computed({
12 read: function () {
13 return this.firstName() + " " + this.lastName();
14 },
15 write: function (value) {
16 var lastSpecPos = value.lastIndexOf(" ");
17 if (lastSpecPos > 0) {
18 this.firstName(value.substring(0, lastSpecPos));
19 this.lastName(value.substring(lastSpecPos + 1));
20 this.isEdit(true);
21 }
22 },
23 owner: this
24 });
25 };
26
27 ko.applyBindings(new AppViewModel());
28 </script>
もちろん、組合せ属性も必ずしも複数の属性の組合せである必要はないが、複数の属性をパラメータとしてajaxを介してサービス側に渡し、jqueryの$などの属性値を取得して表示することもできる.getJSONメソッド.