2

だから私はindex.htmlの下にあります:

<div ng-controller="UsersController">
<div ng-include='"assets/users/partials/template.html"'></div>
<a ng-click="get_data()">Get</a>
</div>

Template.html:

<input type="text" ng-model="SearchUser" name="SearchUser" />

私のコントローラー:

app.controller('UsersController', ['$scope', function($scope) {
    $scope.get_data = function(){ console.log($scope.SearchUser); };
}
]);

したがって、クリックアンカーの上記のケースでは、$scope.SearchUserスコープ値が未定義になっています。しかし、その入力をテンプレートから取り出してメイン HTML 内に配置すると、機能します。

複数のコントローラー宣言やその他のものをチェックしましたが、何もうまくいきませんでした。

angular 1.2.25 バージョンを使用しています。

4

1 に答える 1

6

ng-include は、コントローラ スコープから継承する独自のスコープを定義します。したがって、SearchUser が設定されますが、子スコープの属性として設定されます。

いつものように、解決策は ng-model にドットを入れ、コントローラー スコープで外部オブジェクトを定義することです。

$scope.state = {};

そして、HTML では:

<input type="text" ng-model="state.SearchUser" name="SearchUser" />

そうすれば、角度は子スコープから状態フィールドを取得します。子スコープはプロトタイプとしてコントローラー スコープを拡張するため、コントローラー スコープ内で子スコープを見つけ、状態オブジェクトの SearchUser 属性を書き込みます。

于 2014-10-01T17:58:56.313 に答える