if (fivemiuntesHandler == null) {
Log.d(TAG, "Location update started five minutes ..............: ");
fivemiuntesHandler = new Handler();
fivemiuntesHandler.postDelayed(fiveminutes, 300000);
}
if (thirtysecHandler == null) {
Log.d(TAG, "Location update started five minutes ..............: ");
thirtysecHandler = new Handler();
thirtysecHandler.postDelayed(thirtySec, 0);
}
private Runnable fiveminutes = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
sharedPreferences = getSharedPreferences("user_detail",
MODE_WORLD_WRITEABLE);
login_id = sharedPreferences.getString("login_id", "");
url = sharedPreferences.getString("url", "");
responseArray= null;
response= null;
try {
URL URl;
byte[] data;
String lat_current_pos = null, lng_current_pos = null,address_base64 = null,lat_base64,lng_base64;
lat_current_pos = lat;
lng_current_pos=lng;
data = gcm_id.getBytes("UTF-8");
String gcm_base64 = Base64.encode(data);
data = login_id.getBytes("UTF-8");
String login_base64 = Base64.encode(data);
if(Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE)!=0 && Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE) !=1){
data = getAddress(new LatLng(Double.valueOf(lat_current_pos), Double.valueOf(lng_current_pos))).getBytes("UTF-8");
address_base64 = Base64.encode(data);
}else
{
data = "LOCATION_MODE_OFF".getBytes("UTF-8");
address_base64 = Base64.encode(data);
}
if(Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE)==0 || Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE)==1)
{
data = "".getBytes("UTF-8");
lat_base64 = Base64.encode(data);
data = "".getBytes("UTF-8");
lng_base64 = Base64.encode(data);
}else{
data = lat_current_pos.getBytes("UTF-8");
lat_base64 = Base64.encode(data);
data = lng_current_pos.getBytes("UTF-8");
lng_base64 = Base64.encode(data);
}
data = name.getBytes("UTF-8");
String name_base64 = Base64.encode(data);
data = "I".getBytes("UTF-8");
String flag_base64 = Base64.encode(data);
URl = new URL(
getResources().getString(R.string.services_push_lat_lng));
List<NameValuePair> liNameValuePairs = new ArrayList<NameValuePair>();
liNameValuePairs.add(new BasicNameValuePair("login_id",
login_base64));
liNameValuePairs.add(new BasicNameValuePair("gcm_id", gcm_base64));
if(address_base64==null)
{
liNameValuePairs.add(new BasicNameValuePair("address", ""));
}else
liNameValuePairs.add(new BasicNameValuePair("address", address_base64));
liNameValuePairs.add(new BasicNameValuePair("lat", lat_base64));
liNameValuePairs.add(new BasicNameValuePair("lon", lng_base64));
liNameValuePairs.add(new BasicNameValuePair("name", name_base64));
if (url.contains("boss.xsinfosol.com")) {
liNameValuePairs
.add(new BasicNameValuePair("flag", flag_base64));
}
ApiCallingclass apiCallingclass = new ApiCallingclass();
responseArray = apiCallingclass.callApi(liNameValuePairs, URl);
response = responseArray[0];
System.out.println("5 minutes " + response +" "+login_id);
} catch (UnknownHostException e) {
e.printStackTrace();
}
catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
fivemiuntesHandler.postDelayed(fiveminutes, 300000);
}
};
private Runnable thirtySec = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
update_current_location_tracker uLocation_tracker = new update_current_location_tracker();
uLocation_tracker.execute();
thirtysecHandler.postDelayed(thirtySec, 30000);
}
};
我正在调用此函数来动态添加元素。但是$scope.addNew = function(){
$('.thumb-img-gallary').append("<li><span class='img-del' ng-click='delThumbImgGallaryPhoto($event)'>X</span><img class='thumb-img' src='data:image/jpeg;base64,"+imageData+"'/></li>");
}
没有被调用。
答案 0 :(得分:6)
您不能只使用ng-click或任何其他指令追加元素,并期望它能够正常工作。它必须由angular编译。
关于角度docs的编译的阐述:
对于AngularJS,&#34;编译&#34;意味着将指令附加到HTML以使其成为交互式
竞争发生在以下两种情况之一:
当Angular引导您的应用程序时,HTML编译器会针对DOM元素遍历DOM匹配指令
在角度上下文中调用$compile服务时
所以你需要做的是首先编译它(记住在你的控制器中注入$ compile服务),然后追加它:
$scope.addNew = function(){
var elem = $compile("<li><span class='img-del' ng-click='delThumbImgGallaryPhoto($event)'>X</span><img class='thumb-img' src='data:image/jpeg;base64,"+imageData+"'/></li>")($scope);
$('.thumb-img-gallary').append(elem);
}
顺便说一下,记住它可以在控制器中完成任何DOM操作。 angular有指令。
答案 1 :(得分:3)
angular对您新添加的元素一无所知。您需要使用$ compile编译新添加的元素。你应该更好地使用指令来完成这项任务。
从控制器访问ui元素是一个坏习惯。
编辑:最好使用ng-repeat执行此任务。假设你有一个拇指画廊指令,它使用拇指数组的ng-repeat重复。
当您需要添加新图像时,只需将其添加到您的拇指阵列即可。 它简单明了
你的HTML看起来像
<thumb-gallery ng-repeat="gallery in galleries"></thumb-gallery>
你的js看起来像
var gallery = {};
$scope.galleries.add(gallery);
答案 2 :(得分:3)
你必须compile与范围
试试这个
var item="<li><span class='img-del' ng-click='delThumbImgGallaryPhoto($event)'>X</span><img class='thumb-img' src='data:image/jpeg;base64,"+imageData+"'/></li>"
$('.thumb-img-gallary').append(item);
$compile(item)($scope);