好的,讓我們來看看。 您告訴:「當我刪除第一個輸入框Any時,然後將第二個輸入框的模型從search.name轉換爲搜索」。
做的,我們可以看到下面的HTML:
Name only <input ng-model="search"><br>
Phone only <input ng-model="search.phone"><br>
<tr ng-repeat="friendObj in friends | filter:search:strict">
<td>{{friendObj.name}}</td>
<td>{{friendObj.phone}}</td>
</tr>
現在,當您在名稱輸入任何內容輸入 - 你的表是由各個領域的過濾。在我們的情況下,這些字段是friendObj.name
和friendObj.phone
。發生這種情況是因爲您使用字符串表達式搜索(看看here,當expression
是字符串)。在這一刻,您的search
變量是一個字符串,您看不到電話輸入字段中的任何更改,因爲它綁定到search.phone
變量,但最後一個不存在,因爲search
不是對象,它不包含phone
領域。
現在您嘗試在電話字段中輸入任何內容。在這一刻你的search
變量成爲一個對象,類似的東西:
search = {phone: 'YourText'}
你的表現在只被
friendObj.phone
字段過濾。這是因爲您使用
對象表達式搜索(
the same link,
expression
是
對象)。 現在你可以在現場看到
名稱文本
[object Object]
。這是因爲
名稱字段綁定到
search
變量。但在這一刻,正如我告訴你的,這是一個
對象,而AngularJS試圖從這個對象中創建一個字符串。據你所知(我希望;)),當你試圖修改
Object
到原始
String
- 被稱爲
toString()對象的函數返回
[object Object]
字符串。
希望我解答了您的問題。