回答編集履歴

3

調査結果を回答します

2018/09/29 13:00

投稿

euledge
euledge

スコア2404

test CHANGED
@@ -1,19 +1,187 @@
1
- すみません、こ回答は質問者のかたの状況確認していなかったので、無視してください
1
+ element-ui dropdown-item が想定している@command使い方が違うよう
2
2
 
3
+
4
+
5
+ 説明が長くなるので、まずは動く実装例のリンクは[こちらから](https://jsfiddle.net/euledge/Lsxuh2nr/)
6
+
7
+
8
+
3
- 後ほど書き直します。
9
+ ----
10
+
11
+ 下記の公式ページの該当箇所 [ElementUI component/dropdown](https://element.eleme.io/#/en-US/component/dropdown#dropdown-menu-item-attributes) を見たところ下記のように示されており
4
12
 
5
13
 
6
14
 
7
15
 
8
16
 
17
+ Dropdown Menu Item Attributes
9
18
 
19
+ |Attribute|Description|Type|Accepted Values|Default|
10
20
 
11
- -----
21
+ |:--|:--|:--|:--|:--|
22
+
23
+ |command|a command to be dispatched to Dropdown's command callback|string/number/object||
12
24
 
13
25
 
14
26
 
15
- [Element 公式ページ](https://element.eleme.io/#/en-US/component/dropdown#dropdown)
27
+ itemとしてcommand属性に与えることができるのは文字列、数字、オブジェクトとなっています。
16
28
 
17
- には、下記ようサンプルが載っています。
29
+ つまりここは関数の引数を書くのではなく@commandで指定したmethodsには属性として一つものしか与えることができないということかと思います。
18
30
 
31
+
32
+
33
+ なので複数の値を渡すのであれば複数の項目を持つオブジェクトを渡せばよいのかと思います。
34
+
35
+
36
+
37
+ ``` html
38
+
39
+ <div id="app">
40
+
41
+ <el-row class="block-col-2">
42
+
43
+ <el-col :span="12">
44
+
45
+ <span class="demonstration">click to trigger</span>
46
+
47
+ <el-dropdown @command="storeFunc" trigger="click">
48
+
49
+ <span class="el-dropdown-link">
50
+
19
- まずは下記のソースを自分の環境で実行できるか確認してできるのであれば下記と同じような書き方で実装してみる、そうでなければ環境自体の不備を疑うという順に解決してみてはどうでしょうか?
51
+ Dropdown List<i class="el-icon-arrow-down el-icon--right"></i>
52
+
53
+ </span>
54
+
55
+ <el-dropdown-menu slot="dropdown">
56
+
57
+ <el-dropdown-item :command=store>Action 1</el-dropdown-item>
58
+
59
+ </el-dropdown-menu>
60
+
61
+ </el-dropdown>
62
+
63
+ </el-col>
64
+
65
+ </el-row>
66
+
67
+ </div>
68
+
69
+ ```
70
+
71
+
72
+
73
+ ``` javascript
74
+
75
+ new Vue({
76
+
77
+ el: '#app',
78
+
79
+ data: function() {
80
+
81
+ return {
82
+
83
+ store: {
84
+
85
+ id: 1,
86
+
87
+ name: 'aaa'
88
+
89
+ }
90
+
91
+ }
92
+
93
+ },
94
+
95
+ methods: {
96
+
97
+ storeFunc(param) {
98
+
99
+ console.log(param.id);
100
+
101
+ console.log(param.name);
102
+
103
+ },
104
+
105
+ }
106
+
107
+ })
108
+
109
+ ```
110
+
111
+
112
+
113
+ また、別解も存在します。
114
+
115
+ 下記のElementのIssueにありましたが
116
+
117
+ [Github Element-Issue3194](https://github.com/ElemeFE/element/issues/3194)
118
+
119
+
120
+
121
+ @Commandではなく@Clickを用いて通常のVueJSのメソッド呼び出しを行うことです。
122
+
123
+ これを使用する場合は通常の関数呼び出しになるので、引数として複数のパラメータを渡すことができます。
124
+
125
+
126
+
127
+ > 注意点としては ただの@clickではなく @click.native とする必要があります。
128
+
129
+
130
+
131
+ ``` html
132
+
133
+ <div id="app">
134
+
135
+ <el-row class="block-col-2">
136
+
137
+ <el-col :span="12">
138
+
139
+ <span class="demonstration">click to trigger</span>
140
+
141
+ <el-dropdown>
142
+
143
+ <span class="el-dropdown-link">
144
+
145
+ Dropdown List<i class="el-icon-arrow-down el-icon--right"></i>
146
+
147
+ </span>
148
+
149
+ <el-dropdown-menu slot="dropdown">
150
+
151
+ <el-dropdown-item @click.native="storeFunc(1,'aaa')">Action 1</el-dropdown-item>
152
+
153
+ </el-dropdown-menu>
154
+
155
+ </el-dropdown>
156
+
157
+ </el-col>
158
+
159
+ </el-row>
160
+
161
+ </div>
162
+
163
+ ```
164
+
165
+
166
+
167
+ ```js
168
+
169
+ new Vue({
170
+
171
+ el: '#app',
172
+
173
+ methods: {
174
+
175
+ storeFunc(id, name) {
176
+
177
+ console.log(id);
178
+
179
+ console.log(name);
180
+
181
+ },
182
+
183
+ }
184
+
185
+ })
186
+
187
+ ```

2

すみません訂正します

2018/09/29 12:59

投稿

euledge
euledge

スコア2404

test CHANGED
@@ -1,4 +1,6 @@
1
1
  すみません、この回答は質問者のかたの状況確認していなかったので、無視してください。
2
+
3
+ 後ほど書き直します。
2
4
 
3
5
 
4
6
 
@@ -15,75 +17,3 @@
15
17
  には、下記のようなサンプルが載っています。
16
18
 
17
19
  まずは下記のソースを自分の環境で実行できるか確認してできるのであれば下記と同じような書き方で実装してみる、そうでなければ環境自体の不備を疑うという順に解決してみてはどうでしょうか?
18
-
19
-
20
-
21
-
22
-
23
- ```
24
-
25
- <el-dropdown split-button type="primary" @click="handleClick">
26
-
27
- Dropdown List
28
-
29
- <el-dropdown-menu slot="dropdown">
30
-
31
- <el-dropdown-item>Action 1</el-dropdown-item>
32
-
33
- <el-dropdown-item>Action 2</el-dropdown-item>
34
-
35
- <el-dropdown-item>Action 3</el-dropdown-item>
36
-
37
- <el-dropdown-item>Action 4</el-dropdown-item>
38
-
39
- <el-dropdown-item>Action 5</el-dropdown-item>
40
-
41
- </el-dropdown-menu>
42
-
43
- </el-dropdown>
44
-
45
-
46
-
47
- <style>
48
-
49
- .el-dropdown {
50
-
51
- vertical-align: top;
52
-
53
- }
54
-
55
- .el-dropdown + .el-dropdown {
56
-
57
- margin-left: 15px;
58
-
59
- }
60
-
61
- .el-icon-arrow-down {
62
-
63
- font-size: 12px;
64
-
65
- }
66
-
67
- </style>
68
-
69
-
70
-
71
- <script>
72
-
73
- export default {
74
-
75
- methods: {
76
-
77
- handleClick() {
78
-
79
- alert('button click');
80
-
81
- }
82
-
83
- }
84
-
85
- }
86
-
87
- </script>
88
-
89
- ```

1

取り消し

2018/09/29 08:27

投稿

euledge
euledge

スコア2404

test CHANGED
@@ -1,3 +1,15 @@
1
+ すみません、この回答は質問者のかたの状況確認していなかったので、無視してください。
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+ -----
10
+
11
+
12
+
1
13
  [Element 公式ページ](https://element.eleme.io/#/en-US/component/dropdown#dropdown)
2
14
 
3
15
  には、下記のようなサンプルが載っています。