変数を別のコントローラーに渡す必要があります。ListCtrl に関連する次のコードがあります。
<a href="#items" data-router="article" ng-click="changeListName('metro')">
リンクは、別のコントローラー ItemCtrl に移動します。
ItemCtrlに変数を渡したいです。SharedProperties というサービスを使用することを考えました:
service('sharedProperties', function () {
var list_name = '';
return {
getListName: function() {
return list_name;
},
setListName: function(name) {
list_name = name;
}
};
});
リンクがクリックされると、Angular クリック イベントを呼び出して、次の関数をトリガーします。
$scope.changeListName = function(name) {
sharedProperties.setListName(name);
};
ただし、ng-click は共有プロパティの値を変更していないようです...
アップデート
ng-click によってトリガーされる関数内にアラートを配置すると、アラートがトリガーされます。
ただし、次のように関数を書くと:
$scope.changeListName = function(name) {
sharedProperties.setListName(name);
};
機能しません...「sharedProperties.setListName(name);」のように見えます 実行されません...
ダミーの名前(メトロなど)で関数の外に置くと、機能します..
更新 3
私は複数のことを試しましたが、問題はこの機能にあると確信しています:
$scope.changeListName = function(list_name) {
sharedProperties.setListName(list_name);
};
なぜこれが起こっているのか分かりますか?